diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..b1ca8cba --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,62 @@ +# Javascript Node CircleCI 2.0 configuration file +# +# Check https://circleci.com/docs/2.0/language-javascript/ for more details +# +version: 2.1 + +executors: + default: + docker: + - image: circleci/node:10.16 + working_directory: ~/command-center + +commands: + install_deps: + description: "Install dependencies" + steps: + # Download and cache dependencies + - restore_cache: + name: Restore node_modules + keys: + - v1-dependencies-{{ checksum "yarn.lock" }} + - run: + name: Install dependencies + command: sudo npm install --global yarn && yarn version && yarn cache clean && (yarn install --network-concurrency 1 || yarn install --network-concurrency 1) + - run: + name: Install darknode-sol dependencies + command: cd ./node_modules/darknode-sol && (yarn install --network-concurrency 1 || yarn install --network-concurrency 1) + - save_cache: + name: Save node_modules + paths: + - node_modules + key: v1-dependencies-{{ checksum "yarn.lock" }} + + test_on_local_network: + description: "Test on local network" + steps: + - run: + name: Migrate contracts + command: cd ./node_modules/darknode-sol && (yarn ganache-cli -d > /dev/null &) && sleep 5 && yarn truffle migrate && cd ../../ && yarn run test + +jobs: + build: + executor: default + steps: + - checkout + - install_deps + - test_on_local_network + # - run: + # name: Build + # command: yarn run build + - run: + name: Lint + command: yarn run lint + - run: + name: Lint with warnings + command: yarn run lint:extra || true # FIXME + +workflows: + build: + jobs: + - build + diff --git a/.gitignore b/.gitignore index 6f436e3d..fe475221 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,20 @@ -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies +# Node / NPM / Yarn node_modules - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - npm-debug.log* yarn-debug.log* yarn-error.log* +# Build / test artifacts +coverage +build +dist +coverageEnv +coverage.json +.coveralls.yml + +# Configuration files +*.env .env* + +# OS files +.DS_Store diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 69b7fbd8..00000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -dist: trusty -sudo: required -group: beta -language: node_js -node_js: - - "8" -cache: - directories: - - node_modules -script: - - yarn run build - - yarn run lint - - yarn run lint:extra || true diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 00000000..b4444ce7 --- /dev/null +++ b/.yarnrc @@ -0,0 +1 @@ +--install.network-concurrency 1 diff --git a/README.md b/README.md index db556865..5b086377 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # `🎛️ Command Center` -[![Build Status](https://travis-ci.org/republicprotocol/darknode-command-center.svg?branch=master)](https://travis-ci.org/republicprotocol/darknode-command-center) +[![Build Status](https://circleci.com/gh/renproject/command-center/tree/master.svg)](https://circleci.com/gh/renproject/command-center/tree/master) -[chaosdex.renproject.io](https://chaosdex.renproject.io) +[chaosnet.renproject.io](https://chaosnet.renproject.io) The Darknode Command Center is a front-end UI for registering, funding and monitoring darknodes, and for withdrawing rewards. It should be used along side the [Darknode CLI](https://github.com/renproject/darknode-cli). -For instructions on running a darknode, see [Darknode Rollout: Limited Participation Begins](https://medium.com/republicprotocol/a-sdarknode-rollout-limited-participation-begins-68f51d9bb865). +For instructions on running a darknode, see [Darknode Rollout: Limited Participation Begins](https://medium.com/renproject/a-sdarknode-rollout-limited-participation-begins-68f51d9bb865). ## Previews @@ -17,3 +17,34 @@ All-darknodes page Darknode page ![preview 2](./preview-2.png) + +## Developer notes + +### Project + +The project is structured into [`components`](./src/components), [`store`](./src/store) and [`lib`](./src/lib). + +The library (`lib`) files of note are: + +* [`contractReads.ts`](./src/lib/ethereum/contractReads.ts) +* [`contractWrites.ts`](./src/lib/ethereum/contractWrites.ts) + +### Tests + +(see [CircleCI config](./.circleci/config.yml) for more details) + +In one terminal, start a local Ethereum node by running: + +```bash +cd ./node_modules/darknode-sol +yarn install +(yarn ganache-cli -d > /dev/null &) +sleep 5 +yarn truffle migrate +``` + +In another, run: + +```bash +yarn run test +``` \ No newline at end of file diff --git a/package.json b/package.json index 9b5b4e27..78113773 100644 --- a/package.json +++ b/package.json @@ -1,81 +1,106 @@ { - "name": "darknode-command-center", + "name": "command-center", "version": "0.1.0", "private": true, + "scripts": { + "lint:unused-exports": "ts-unused-exports ./tsconfig.json", + "lint:outdated-imports": "ncu", + "lint:ts": "tslint --project ./ -t stylish --quiet", + "lint:extra": "$npm_execpath run --silent lint:unused-exports; $npm_execpath run --silent lint:outdated-imports", + "lint:all": "$npm_execpath run --silent lint:ts && $npm_execpath run --silent lint:extra", + "lint": "$npm_execpath run --silent lint:ts", + "test": "react-scripts test", + "start": "./.env || true; react-scripts start", + "build": "REACT_APP_SOURCE_VERSION=$SOURCE_VERSION react-scripts build", + "eject": "react-scripts eject" + }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^1.2.18", - "@fortawesome/free-brands-svg-icons": "^5.8.2", - "@fortawesome/free-regular-svg-icons": "^5.8.2", - "@fortawesome/free-solid-svg-icons": "^5.8.2", - "@fortawesome/react-fontawesome": "^0.1.4", - "@renex/fonts": "^1.0.1", - "@renex/react-components": "^1.0.21", - "@sentry/browser": "^5.4.0", - "@sentry/core": "^5.4.0", - "@types/bs58": "^4.0.0", - "@types/jest": "^24.0.13", - "@types/node": "^12.0.4", + "@fortawesome/fontawesome-svg-core": "^1.2.25", + "@fortawesome/free-brands-svg-icons": "^5.11.2", + "@fortawesome/free-regular-svg-icons": "^5.11.2", + "@fortawesome/free-solid-svg-icons": "^5.11.2", + "@fortawesome/react-fontawesome": "^0.1.7", + "@renproject/contracts": "0.3.28", + "@renproject/fonts": "^1.0.1", + "@renproject/react-components": "1.0.37", + "@renproject/ren": "^0.2.3", + "@sentry/browser": "^5.10.1", + "@sentry/core": "^5.10.1", + "@sentry/integrations": "^5.10.1", + "@types/bchaddrjs": "^0.4.0", + "@types/bs58": "^4.0.1", + "@types/filesize": "^5.0.0", + "@types/jest": "^24.0.23", + "@types/node": "^12.12.14", "@types/query-string": "^6.3.0", - "@types/react": "^16.8.19", - "@types/react-dom": "^16.8.4", - "@types/react-redux": "^7.0.9", - "@types/react-router-dom": "^4.3.3", - "@types/underscore": "^1.8.18", + "@types/react": "^16.9.15", + "@types/react-dom": "^16.9.4", + "@types/react-redux": "^7.1.5", + "@types/react-router-dom": "^5.1.3", + "@types/react-simple-maps": "^0.12.2", + "@types/react-transition-group": "4.2", + "@types/underscore": "^1.9.4", "axios": "^0.19.0", + "bchaddrjs": "^0.4.4", "bignumber.js": "^9.0.0", "bs58": "^4.0.1", - "chart.js": "^2.8.0", - "history": "^4.9.0", + "chart.js": "^2.9.3", + "filesize": "^6.0.1", + "history": "^4.10.1", "immutable": "^4.0.0-rc.12", + "localforage": "^1.7.3", "moment": "^2.24.0", - "node-sass": "^4.12.0", - "query-string": "^6.5.0", - "react": "^16.8.6", - "react-chartjs-2": "^2.7.6", - "react-dom": "^16.8.6", - "react-redux": "^7.0.3", - "react-router-dom": "^5.0.0", - "react-scripts": "^3.0.1", - "redux": "^4.0.1", - "redux-persist": "^5.10.0", + "node-sass": "^4.13.0", + "query-string": "^6.9.0", + "react": "^16.12.0", + "react-chartjs-2": "^2.8.0", + "react-dom": "^16.12.0", + "react-redux": "^7.1.3", + "react-router-dom": "^5.1.2", + "react-scripts": "^3.3.0", + "react-simple-maps": "^0.12.1", + "react-transition-group": "4.3", + "redux": "^4.0.4", + "redux-persist": "^6.0.0", "redux-thunk": "^2.3.0", - "typesafe-actions": "^4.4.0", - "typescript": "^3.5.1", + "scrypt": "https://github.com/ren-forks/node-scrypt", + "sha3": "^2.0.0", + "typesafe-actions": "^5.1.0", + "typescript": "^3.7.3", + "unstated-next": "^1.1.0", "wallet-address-validator": "^0.2.4", - "web3": "^1.0.0-beta.55", - "web3-core": "^1.0.0-beta.55", - "web3-eth-contract": "^1.0.0-beta.55", - "web3-provider-engine": "^15.0.0", - "web3-utils": "^1.0.0-beta.55" + "web3": "2.0.0-alpha.1", + "web3-core": "2.0.0-alpha.1", + "web3-eth": "2.0.0-alpha.1", + "web3-eth-contract": "2.0.0-alpha.1", + "web3-providers": "2.0.0-alpha.1", + "web3-utils": "2.0.0-alpha.1" }, "devDependencies": { + "@truffle/hdwallet-provider": "^1.0.26", + "@types/chai": "^4.2.6", "any-promise": "^1.3.0", - "npm-check-updates": "^3.1.10", - "ts-unused-exports": "^2.0.11", - "tslint": "^5.17.0", + "chai": "^4.2.0", + "darknode-sol": "https://github.com/renproject/darknode-sol#f60d23ffa59203ae13a3d99688f12fdf704eb095", + "npm-check-updates": "^3.2.2", + "ts-unused-exports": "^5.1.0", + "tslint": "^5.20.1", "tslint-microsoft-contrib": "^6.2.0", - "tslint-react": "^4.0.0", - "underscore": "^1.9.1", - "web3-core-promievent": "^1.0.0-beta.48", - "web3-core-requestmanager": "^1.0.0-beta.37", - "web3-core-subscriptions": "^1.0.0-beta.55" + "tslint-react": "^4.1.0", + "underscore": "^1.9.1" }, - "scripts": { - "lint:unused-exports": "ts-unused-exports ./tsconfig.json", - "lint:outdated-imports": "ncu", - "lint:ts": "tslint --project ./ -t stylish --quiet", - "lint:extra": "$npm_execpath run --silent lint:unused-exports; $npm_execpath run --silent lint:outdated-imports", - "lint:all": "$npm_execpath run --silent lint:ts && $npm_execpath run --silent lint:extra", - "lint": "$npm_execpath run --silent lint:ts", - "test": "react-scripts test", - "start": "./.env || true; react-scripts start", - "build": "REACT_APP_SOURCE_VERSION=$SOURCE_VERSION react-scripts build", - "eject": "react-scripts eject" + "resolutions": { + "scrypt": "https://github.com/ren-forks/node-scrypt", + "sha3": "^2.0.0" }, "browserslist": [ ">0.2%", "not dead", "not ie <= 11", "not op_mini all" - ] + ], + "jest": { + "globalSetup": "./src/test/globalSetup.ts", + "globalTeardown": "./src/test/globalTeardown.ts" + } } diff --git a/public/index.html b/public/index.html index 0b2d4e56..42ff90b6 100644 --- a/public/index.html +++ b/public/index.html @@ -20,7 +20,7 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> - Darknode Command Center + Command Center diff --git a/src/components/AccountDropdown.tsx b/src/components/AccountDropdown.tsx deleted file mode 100644 index fab0f085..00000000 --- a/src/components/AccountDropdown.tsx +++ /dev/null @@ -1,209 +0,0 @@ -import * as React from "react"; - -import { Blocky, Loading } from "@renex/react-components"; -import { connect, ConnectedReturnType } from "react-redux"; -import { bindActionCreators, Dispatch } from "redux"; - -import { login, logout } from "../store/actions/trader/accountActions"; -import { ApplicationData, EthNetwork } from "../store/types"; - -const defaultState = { // Entries must be immutable - shown: false, - copied: false, -}; - -// tslint:disable: react-unused-props-and-state -class AccountDropdownClass extends React.Component { - private ref: HTMLDivElement | null = null; - - constructor(props: Props) { - super(props); - this.state = defaultState; - } - - public render = () => { - const { address, web3BrowserName, transactions, confirmations, ethNetwork } = this.props.store; - const { copied } = this.state; - - // `pendingTXs` calculates whether or not the user has any ethereum - // transactions that haven't been confirmed yet. - const pendingTXs = transactions.reduce((reduction: boolean, _value, key: string) => { - return reduction || confirmations.get(key, 0) === 0; - }, false); - - const etherscan = `https://${ethNetwork === EthNetwork.Mainnet ? "" : `${ethNetwork}.`}etherscan.io`; - - const { shown } = this.state; - - // const x =
- //
- // {selected.render} - //
- // {shown ? - //
- //
    - // { - // OrderedMap(options).map((render, value) =>
  • - // {render} - //
  • ).valueSeq().toArray()} - //
- //
: null - // } - //
; - - return
-
- {address && } -
-
- {web3BrowserName} {pendingTXs ? : <>} -
- {address ? -
- {address.substring(0, 8)}...{address.slice(-5)} -
: -
Not connected
- } -
-
- - {shown ? -
-
    - {address ? <> -
  • - - {copied ? - Copied - : - Copy to clipboard - } - -
  • -
  • - Log out -
  • - {transactions.size > 0 ? - <> - {transactions.map((tx, txHash) => { - const confs = confirmations.get(txHash, 0); - return
  • - {confs === 0 ? : <>} - {confs === -1 ? (ERR) {" "} : <>} - {txHash.substring(0, 12)}... - {confs > 0 ? <>{" "}({confs} conf.) : ""} -
  • ; - }).valueSeq().toArray()} - : <> - } - : -
  • - Connect {web3BrowserName} -
  • - } -
-
: <> - } -
; - } - - private readonly handleLogin = async (): Promise => { - const { address } = this.props.store; - if (!address) { - await this.props.actions.login({ redirect: false, showPopup: true, immediatePopup: true }); - } - } - - private readonly handleLogout = async (): Promise => { - await this.props.actions.logout({ reload: false }); - } - - private readonly copyToClipboard = (e: React.MouseEvent): void => { - const el = e.currentTarget.childNodes[0] as Element; - const address = el.getAttribute("data-addr"); - if (address) { - const dummy = document.createElement("input"); - document.body.appendChild(dummy); - dummy.setAttribute("value", address); - dummy.select(); - document.execCommand("copy"); - document.body.removeChild(dummy); - } - this.setState({ copied: true }); - } - - private readonly setRef = (ref: HTMLDivElement) => { - this.ref = ref; - } - - // tslint:disable-next-line: no-any - private readonly clickAway = (event: any) => { - // tslint:disable-next-line: no-any - if ((this.ref && !this.ref.contains(event.target))) { - this.setState({ shown: false }); - } - document.removeEventListener("mousedown", this.clickAway); - // @ts-ignore - } - - private readonly toggle = () => { - const newShown = !this.state.shown; - this.setState({ shown: newShown }); - - if (newShown) { - document.addEventListener("mousedown", this.clickAway); - } else { - document.removeEventListener("mousedown", this.clickAway); - } - } -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - address: state.trader.address, - web3BrowserName: state.trader.web3BrowserName, - quoteCurrency: state.statistics.quoteCurrency, - web3: state.trader.web3, - transactions: state.statistics.transactions, - confirmations: state.statistics.confirmations, - ethNetwork: state.trader.ethNetwork, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - login, - logout, - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType { -} - -export const AccountDropdown = connect(mapStateToProps, mapDispatchToProps)(AccountDropdownClass); diff --git a/src/components/App.tsx b/src/components/App.tsx index 799c9a9b..a9b5ede1 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -1,92 +1,124 @@ import * as React from "react"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { Route, RouteComponentProps, Switch, withRouter } from "react-router-dom"; -import { bindActionCreators, Dispatch } from "redux"; +import { Route, RouteComponentProps, Switch, useLocation, withRouter } from "react-router-dom"; +import { bindActionCreators } from "redux"; -import { Home } from "./pages/Home"; -import { PopupController } from "./popups/PopupController"; +import { DEFAULT_REN_NETWORK } from "../lib/react/environmentVariables"; +import { _catchBackgroundException_ } from "../lib/react/errors"; +import { promptLogin } from "../store/account/accountActions"; +import { ApplicationState } from "../store/applicationState"; +import { AppDispatch } from "../store/rootReducer"; +import { AllDarknodes } from "./allDarknodesPage/AllDarknodes"; +import { NotFound } from "./common/404"; +import { BackgroundTasks } from "./common/BackgroundTasks"; +import { Connect } from "./common/Connect"; +import { _catch_ } from "./common/ErrorBoundary"; +import { Footer } from "./common/Footer"; +import { Header } from "./common/Header"; +import { LoggingIn } from "./common/LoggingIn"; +import { PopupController } from "./common/popups/PopupController"; +import { Sidebar } from "./common/sidebar/Sidebar"; +import { Darknode, getDarknodeParam } from "./darknodePage/Darknode"; +import { Overview } from "./overviewPage/Overview"; +import { RenVM } from "./renvmPage/RenVM"; -import { DEPLOYMENT } from "../lib/environmentVariables"; -import { ApplicationData, EthNetwork, getNetworkLabel, Network } from "../store/types"; -import { BackgroundTasks } from "./BackgroundTasks"; -import { _catch_ } from "./ErrorBoundary"; -import { Header } from "./Header"; -import { Darknode, getDarknodeParam } from "./pages/Darknode"; -import { LoggingIn } from "./pages/LoggingIn"; -import { NotFound } from "./pages/NotFound"; -import { Sidebar } from "./Sidebar"; +// Component that attaches scroll to top hanler on router change +// renders nothing, just attaches side effects +export const ScrollToTopWithRouter = withRouter(() => { + // this assumes that current router state is accessed via hook + // but it does not matter, pathname and search (or that ever) may come from props, context, etc. + const location = useLocation(); -// Scroll restoration based on https://reacttraining.com/react-router/web/guides/scroll-restoration -const ScrollToTop = withRouter( - // tslint:disable-next-line:no-any - class ScrollToTopWithoutRouter extends React.Component> { - // tslint:disable-next-line:no-any - public componentDidUpdate(prevProps: Readonly>): void { - if (this.props.location !== prevProps.location) { - window.scrollTo(0, 0); - } + // just run the effect on pathname and/or search change + React.useEffect(() => { + try { + // trying to use new API - https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo + window.scroll({ + top: 0, + left: 0, + behavior: "smooth", + }); + } catch (error) { + // just a fallback for older browsers + window.scrollTo(0, 0); } + }, [location]); - public render(): JSX.Element | null { - return null; - } - } -); + // renders nothing, since nothing is needed + return null; +}); /** * App is the main visual component responsible for displaying different routes * and running background app loops */ -class AppClass extends React.Component { - public withAccount = (component: T): +const AppClass = ({ match: { params }, store: { address, loggedInBefore, renNetwork }, actions }: Props) => { + + React.useEffect(() => { + if (loggedInBefore) { + actions.promptLogin({ manual: false, redirect: false, showPopup: false, immediatePopup: false }) + .catch((error) => _catchBackgroundException_(error, "Error in App > promptLogin")); + } + }, []); + + const withAccount = React.useCallback((component: T): React.ComponentClass | React.StatelessComponent => - this.props.store.address ? component : LoggingIn + address ? component : LoggingIn, + [address], + ); - public render = (): JSX.Element => { - const { match: { params }, store: { address, ethNetwork } } = this.props; - const darknodeID = getDarknodeParam(params); - const showNetworkBanner = ethNetwork !== EthNetwork.Mainnet || DEPLOYMENT === Network.Staging; + const darknodeID = getDarknodeParam(params); + const showNetworkBanner = renNetwork.name !== DEFAULT_REN_NETWORK; - return
- - - {/* - * We set the key to be the address so that any sub-component state is reset after changing accounts - * (e.g. if in - * the middle of a transaction, etc.) - */} -
- {showNetworkBanner ? -
Using {getNetworkLabel(ethNetwork)} Ethereum network
: - <> - } + return
+ + + {/* + * We set the key to be the address so that any sub-component state is reset after changing accounts + * (e.g. if in + * the middle of a transaction, etc.) + */} +
+ {showNetworkBanner ? +
Using {renNetwork.label} RenVM network, {renNetwork.chainLabel} Ethereum network
: + <> + } + - {address ? _catch_() : null} + {_catch_()}
- - + {_catch_( + {/* tslint:disable-next-line: react-this-binding-issue jsx-no-lambda */} + + + + + + - + , { popup: true })}
+ {_catch_(
)} - {_catch_(
)} -
-
; - } -} + + {_catch_(
)} +
+
; +}; -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - address: state.trader.address, - web3: state.trader.web3, - ethNetwork: state.trader.ethNetwork, + address: state.account.address, + loggedInBefore: state.account.loggedInBefore, + renNetwork: state.account.renNetwork, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ + promptLogin, }, dispatch), }); diff --git a/src/components/BackgroundTasks.tsx b/src/components/BackgroundTasks.tsx deleted file mode 100644 index 386ce1ba..00000000 --- a/src/components/BackgroundTasks.tsx +++ /dev/null @@ -1,282 +0,0 @@ -import * as qs from "query-string"; -import * as React from "react"; - -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { RouteComponentProps, withRouter } from "react-router-dom"; -import { bindActionCreators, Dispatch } from "redux"; - -import { _captureBackgroundException_ } from "../lib/errors"; -import { - updateNetworkStatistics, updateTokenPrices, -} from "../store/actions/statistics/networkActions"; -import { - updateDarknodeStatistics, updateOperatorStatistics, -} from "../store/actions/statistics/operatorActions"; -import { login, lookForLogout } from "../store/actions/trader/accountActions"; -import { ApplicationData } from "../store/types"; -import { getDarknodeParam } from "./pages/Darknode"; - -/** - * BackgroundTasks is the main visual component responsible for displaying different routes - * and running background app loops - */ -class BackgroundTasksClass extends React.Component { - private callUpdatePricesTimeout: NodeJS.Timer | undefined; - private callLookForLogoutTimeout: NodeJS.Timer | undefined; - private callUpdateNetworkStatisticsTimeout: NodeJS.Timer | undefined; - private callUpdateOperatorStatisticsTimeout: NodeJS.Timer | undefined; - private callUpdateSelectedDarknodeTimeout: NodeJS.Timer | undefined; - - public componentDidMount = async (): Promise => { - const { match: { params } } = this.props; - - const darknodeID = getDarknodeParam(params); - - const queryParams = qs.parse(this.props.location.search); - const action = typeof queryParams.action === "string" ? queryParams.action : undefined; - - // Sometimes, logging in seems to freeze, to we start loops that don't - // rely on being logged in before attempting to log in - this.setupLoops(); - - try { - await this.props.actions.login( - { - redirect: false, - showPopup: darknodeID === undefined || action !== undefined, - immediatePopup: false, - } - ); - } catch (error) { - _captureBackgroundException_(error, { - description: "Error logging in on load", - }); - } - - this.setupLoopsWithAccount(); - } - - public componentWillReceiveProps = (nextProps: Props): void => { - if (this.props.store.address !== nextProps.store.address) { - this.callUpdateOperatorStatistics(nextProps).catch(error => { - _captureBackgroundException_(error, { - description: "Error in callUpdateOperatorStatistics in BackgroundTasks", - }); - }); - } - - const { match: { params: nextParams } } = nextProps; - const { match: { params } } = this.props; - - const nextDarknodeID = getDarknodeParam(nextParams); - const darknodeID = getDarknodeParam(params); - - if (darknodeID !== nextDarknodeID) { - this.callUpdateSelectedDarknode(nextProps).catch(error => { - _captureBackgroundException_(error, { - description: "Error in callUpdateSelectedDarknode in BackgroundTasks", - }); - }); - } - - } - - public componentWillUnmount(): void { - // Clear timeouts - if (this.callUpdatePricesTimeout) { clearTimeout(this.callUpdatePricesTimeout); } - if (this.callLookForLogoutTimeout) { clearTimeout(this.callLookForLogoutTimeout); } - if (this.callUpdateNetworkStatisticsTimeout) { clearTimeout(this.callUpdateNetworkStatisticsTimeout); } - if (this.callUpdateOperatorStatisticsTimeout) { clearTimeout(this.callUpdateOperatorStatisticsTimeout); } - if (this.callUpdateSelectedDarknodeTimeout) { clearTimeout(this.callUpdateSelectedDarknodeTimeout); } - } - - public render = (): JSX.Element => <>; - - // Update token prices every 60 seconds - private readonly callUpdatePrices = async (props?: Props): Promise => { - props = props || this.props; - - try { - // tslint:disable-next-line: await-promise - await props.actions.updateTokenPrices(); - } catch (error) { - _captureBackgroundException_(error, { - description: "Error thrown in callUpdatePrices background task", - }); - } - if (this.callUpdatePricesTimeout) { clearTimeout(this.callUpdatePricesTimeout); } - this.callUpdatePricesTimeout = setTimeout(this.callUpdatePrices, 60 * 1000) as unknown as NodeJS.Timer; - } - - // See if the user has logged out every 5 seconds - private readonly callLookForLogout = async (props?: Props): Promise => { - props = props || this.props; - - const { address, web3 } = props.store; - if (address) { - try { - // tslint:disable-next-line: await-promise - await props.actions.lookForLogout(address, web3); - } catch (error) { - _captureBackgroundException_(error, { - description: "Error thrown in callLookForLogout background task", - }); - } - } - if (this.callLookForLogoutTimeout) { clearTimeout(this.callLookForLogoutTimeout); } - this.callLookForLogoutTimeout = setTimeout(this.callLookForLogout, 5 * 1000) as unknown as NodeJS.Timer; - } - - // Update network statistics every 3600 seconds - private readonly callUpdateNetworkStatistics = async (props?: Props): Promise => { - props = props || this.props; - - const { web3, ethNetwork } = props.store; - let timeout = 1; // Retry in a second, unless the call succeeds - try { - // tslint:disable-next-line: await-promise - await props.actions.updateNetworkStatistics(web3, ethNetwork); - timeout = 3600; - } catch (error) { - if (error && error.message && error.message.match("Cannot read property 'toString' of")) { - // Ignore - } else { - _captureBackgroundException_(error, { - description: "Error thrown in callUpdateNetworkStatistics background task", - }); - } - } - if (this.callUpdateNetworkStatisticsTimeout) { clearTimeout(this.callUpdateNetworkStatisticsTimeout); } - this.callUpdateNetworkStatisticsTimeout = setTimeout( - this.callUpdateNetworkStatistics, - timeout * 1000, - ) as unknown as NodeJS.Timer; - } - - // Update operator statistics every 120 seconds - private readonly callUpdateOperatorStatistics = async (props?: Props): Promise => { - props = props || this.props; - - const { web3, address, tokenPrices, darknodeList, darknodeRegisteringList, ethNetwork } = props.store; - let timeout = 1; // Retry in a second, unless the call succeeds - if (address && tokenPrices) { - try { - let list = darknodeRegisteringList.keySeq().toList(); - if (darknodeList) { - list = list.concat(darknodeList); - } - // tslint:disable-next-line: await-promise - await props.actions.updateOperatorStatistics(web3, ethNetwork, address, tokenPrices, list); - timeout = 120; - } catch (error) { - _captureBackgroundException_(error, { - description: "Error thrown in callUpdateOperatorStatistics background task", - }); - timeout = 10; - } - } - if (this.callUpdateOperatorStatisticsTimeout) { clearTimeout(this.callUpdateOperatorStatisticsTimeout); } - this.callUpdateOperatorStatisticsTimeout = setTimeout( - this.callUpdateOperatorStatistics, - timeout * 1000, - ) as unknown as NodeJS.Timer; - } - - // Update selected darknode statistics every 30 seconds - private readonly callUpdateSelectedDarknode = async (props?: Props): Promise => { - props = props || this.props; - - const { match: { params } } = props; - const { web3, tokenPrices, ethNetwork } = props.store; - - const darknodeID = getDarknodeParam(params); - - let timeout = 1; // if the action isn't called, try again in 1 second - if (tokenPrices && darknodeID) { - try { - // tslint:disable-next-line: await-promise - await props.actions.updateDarknodeStatistics( - web3, - ethNetwork, - darknodeID, - tokenPrices, - ); - timeout = 30; - } catch (error) { - _captureBackgroundException_(error, { - description: "Error thrown in callUpdateSelectedDarknode background task", - }); - timeout = 15; // try again in half the time - } - } - if (this.callUpdateSelectedDarknodeTimeout) { clearTimeout(this.callUpdateSelectedDarknodeTimeout); } - this.callUpdateSelectedDarknodeTimeout = setTimeout( - this.callUpdateSelectedDarknode, - timeout * 1000, - ) as unknown as NodeJS.Timer; - } - - // tslint:disable-next-line:member-ordering - public setupLoops(): void { - this.callUpdatePrices().catch(error => { - _captureBackgroundException_(error, { - description: "Error in callUpdatePrices in BackgroundTasks", - }); - }); - this.callUpdateNetworkStatistics().catch(error => { - _captureBackgroundException_(error, { - description: "Error in callUpdateNetworkStatistics in BackgroundTasks", - }); - }); - this.callUpdateSelectedDarknode().catch(error => { - _captureBackgroundException_(error, { - description: "Error in callUpdateSelectedDarknode in BackgroundTasks", - }); - }); - } - - // tslint:disable-next-line:member-ordering - public setupLoopsWithAccount(): void { - this.callLookForLogout().catch(error => { - _captureBackgroundException_(error, { - description: "Error in callLookForLogout in BackgroundTasks", - }); - }); - this.callUpdateOperatorStatistics().catch(error => { - _captureBackgroundException_(error, { - description: "Error in callUpdateOperatorStatistics in BackgroundTasks", - }); - }); - } - -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - address: state.trader.address, - web3: state.trader.web3, - tokenPrices: state.statistics.tokenPrices, - darknodeList: state.trader.address ? state.statistics.darknodeList.get(state.trader.address, null) : null, - darknodeRegisteringList: state.statistics.darknodeRegisteringList, - ethNetwork: state.trader.ethNetwork, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - login, - lookForLogout, - updateTokenPrices, - updateNetworkStatistics, - updateOperatorStatistics, - updateDarknodeStatistics, - }, dispatch), -}); - -interface Props extends - ReturnType, - ConnectedReturnType, - RouteComponentProps { -} - -export const BackgroundTasks = connect(mapStateToProps, mapDispatchToProps)(withRouter(BackgroundTasksClass)); diff --git a/src/components/CurrencyIcon.tsx b/src/components/CurrencyIcon.tsx deleted file mode 100644 index 939cdb3a..00000000 --- a/src/components/CurrencyIcon.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import * as React from "react"; - -import { faBitcoin, faEthereum } from "@fortawesome/free-brands-svg-icons"; -import { faDollarSign, faEuroSign, faPoundSign, faWonSign, faYenSign } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Currency } from "../store/types"; - -export const CurrencyIcon: React.StatelessComponent<{ - currency: Currency, -}> = ({ currency }) => { - - // Note: Typescript will warn if the switch statement is non-exhaustive - - // tslint:disable: switch-default - // eslint-disable-next-line - switch (currency) { - case Currency.AUD: - return ; - case Currency.CNY: - return ; - case Currency.GBP: - return ; - case Currency.EUR: - return ; - case Currency.JPY: - return ; - case Currency.KRW: - return ; - case Currency.USD: - return ; - case Currency.ETH: - return ; - case Currency.BTC: - return ; - } -}; diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx deleted file mode 100644 index 977577f7..00000000 --- a/src/components/ErrorBoundary.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import * as Sentry from "@sentry/browser"; -import * as React from "react"; - -import { _captureComponentException_ } from "../lib/errors"; - -const defaultState = { // Entries must be immutable - error: null as null | Error, - errorInfo: null as null | React.ErrorInfo, -}; - -class ErrorBoundary extends React.Component { - constructor(props: Props) { - super(props); - this.state = defaultState; - } - - public componentDidCatch = (error: Error, errorInfo: React.ErrorInfo) => { - this.setState({ - error, - errorInfo, - }); - _captureComponentException_(error, errorInfo); - } - - /** - * The main render function. - * @dev Should have minimal computation, loops and anonymous functions. - */ - public render(): React.ReactNode { - if (this.state.errorInfo) { - // Error path - return ( -
-

Something went wrong.

-
- {this.state.error && this.state.error.toString()} -
- {this.state.errorInfo.componentStack} -
- {this.props.popup ?
- - -
: null - } -
- ); - } - // Normally, just render children - return this.props.children; - } - - private readonly reportFeedback = () => { - Sentry.showReportDialog(); - } -} - -interface Props { - /** - * Popup specifies whether or not the Error Boundary is being rendered in - * the popup controller. - */ - popup?: boolean; - - /** - * If `popup` is true, then onCancel should also be provided. - */ - onCancel?(): void; -} - -export const _catch_ = ( - children: React.ReactNode, - options?: { key?: string; popup?: boolean; onCancel?(): void } -) => - {children} - ; diff --git a/src/components/Header.tsx b/src/components/Header.tsx deleted file mode 100644 index dc76e9a2..00000000 --- a/src/components/Header.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import * as React from "react"; - -import { faBars } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Dropdown } from "@renex/react-components"; -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { Link, RouteComponentProps, withRouter } from "react-router-dom"; -import { bindActionCreators, Dispatch } from "redux"; - -import { storeQuoteCurrency } from "../store/actions/statistics/operatorActions"; -import { showMobileMenu } from "../store/actions/ui/uiActions"; -import { ApplicationData, currencies, Currency } from "../store/types"; -import { AccountDropdown } from "./AccountDropdown"; -import { CurrencyIcon } from "./CurrencyIcon"; - -import { ReactComponent as English } from "../styles/images/rp-flag-uk.svg"; - -const languageOptions = new Map() - .set("EN", - <> English - ); - -const getCurrencyOptions = () => { - const options = new Map(); - - for (const currency of currencies) { - options.set(currency.currency, <> - - {" "}{currency.description} - ); - } - - return options; -}; - -const currencyOptions = getCurrencyOptions(); - -/** - * Header is a visual component providing page branding and navigation. - */ -class HeaderClass extends React.Component { - public render = (): JSX.Element => { - const { address, quoteCurrency } = this.props.store; - - const languageDropdownNode = ; - - const currencyDropdownNode = - - {" "}{quoteCurrency.toUpperCase()} - - }} - options={currencyOptions} - setValue={this.setCurrency} - />; - - return ( -
-
-
- {address ?
- -
: <>} -
- -
- -
- {languageDropdownNode} - {currencyDropdownNode} - -
-
-
- ); - } - - private readonly setCurrency = (currency: string): void => { - this.props.actions.storeQuoteCurrency({ quoteCurrency: currency as Currency }); - } - - private readonly setLanguage = (language: string): void => { - // NOT IMPLEMENTED - } -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - address: state.trader.address, - quoteCurrency: state.statistics.quoteCurrency, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - storeQuoteCurrency, - showMobileMenu, - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType, - RouteComponentProps { -} - -export const Header = connect(mapStateToProps, mapDispatchToProps)(withRouter(HeaderClass)); diff --git a/src/components/InfoLabel.tsx b/src/components/InfoLabel.tsx deleted file mode 100644 index 298f4431..00000000 --- a/src/components/InfoLabel.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import * as React from "react"; - -import { LabelLevel } from "../store/types"; - -const defaultState = { // Entries must be immutable - top: 0, - left: 0, -}; - -/** - * InfoLabel is a visual component for displaying an information message for - * another component - */ -export class InfoLabel extends React.Component { - constructor(props: Props) { - super(props); - this.state = defaultState; - } - - /** - * The main render function. - * @dev Should have minimal computation, loops and anonymous functions. - */ - public render(): React.ReactNode { - const { level, children } = this.props; - const iconType = level || LabelLevel.Info; - return ( -
-
-
{children ? children : ""}
-
- ); - } - - private readonly onMouseEnter = (event: React.MouseEvent) => { - const { top, left, width, height } = event.currentTarget.getBoundingClientRect(); - this.setState({ - top: top - height / 2, - left: left + width / 2, - }); - } -} - -interface Props { - level?: LabelLevel; - children?: React.ReactNode; -} diff --git a/src/components/Loading.tsx b/src/components/Loading.tsx deleted file mode 100644 index dc8df75c..00000000 --- a/src/components/Loading.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from "react"; - -/** - * Loading is a visual component that renders a spinning animation - */ -export const Loading = (props: Props): JSX.Element => { - const { alt, className, style } = props; - return ( -
- ); -}; - -// tslint:disable: react-unused-props-and-state -interface Props { - alt?: boolean; - className?: string; - style?: React.CSSProperties; -} diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx deleted file mode 100644 index 50226f53..00000000 --- a/src/components/Sidebar.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import * as React from "react"; - -import { faStar } from "@fortawesome/free-regular-svg-icons"; -import { faFire, faThLarge, faTimes } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Blocky } from "@renex/react-components"; -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { Link } from "react-router-dom"; -import { bindActionCreators, Dispatch } from "redux"; - -import { Token } from "../lib/ethereum/tokens"; -import { RegistrationStatus } from "../store/actions/statistics/operatorActions"; -import { hideMobileMenu } from "../store/actions/ui/uiActions"; -import { ApplicationData, Currency } from "../store/types"; -import { CurrencyIcon } from "./CurrencyIcon"; -import { DarknodeID } from "./DarknodeID"; -import { darknodeIDHexToBase58 } from "./pages/Darknode"; -import { TokenBalance } from "./TokenBalance"; - -/** - * Sidebar displays stats about an operator's darknodes collectively, - * as well as a breakdown of each darknode - */ -class SidebarClass extends React.Component { - public render = (): JSX.Element => { - const { selectedDarknode, store } = this.props; - const { darknodeList, darknodeDetails, darknodeNames, quoteCurrency, mobileMenuActive } = store; - - return ( - - ); - } - - private readonly hideMobileMenu = (): void => { - this.props.actions.hideMobileMenu(); - } -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - darknodeList: state.trader.address ? state.statistics.darknodeList.get(state.trader.address) : null, - darknodeDetails: state.statistics.darknodeDetails, - darknodeNames: state.statistics.darknodeNames, - quoteCurrency: state.statistics.quoteCurrency, - mobileMenuActive: state.ui.mobileMenuActive, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - hideMobileMenu, - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType { - selectedDarknode: string | undefined; -} - -export const Sidebar = connect(mapStateToProps, mapDispatchToProps)(SidebarClass); diff --git a/src/components/TokenBalance.tsx b/src/components/TokenBalance.tsx deleted file mode 100644 index ce273de4..00000000 --- a/src/components/TokenBalance.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import * as React from "react"; - -import { BigNumber } from "bignumber.js"; -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; - -import { AllTokenDetails, OldToken, Token, } from "../lib/ethereum/tokens"; -import { ApplicationData, Currency } from "../store/types"; - -// export const tokenBalanceToString = ( -// token: Token | OldToken, -// amountIn: string | BigNumber, -// decimals: number, -// tokenPrices: Map> | null, -// convertTo?: Currency, -// digits?: number, -// ): string => { -// const amount = new BigNumber(amountIn) -// .div(new BigNumber(Math.pow(10, decimals))); - -// if (!convertTo) { -// return `${digits !== undefined ? amount.toFixed(digits) : amount.toFixed()}`; -// } - -// if (!tokenPrices) { -// return `...`; -// } - -// const tokenPriceMap = tokenPrices.get(token, undefined); -// if (!tokenPriceMap) { -// return `...`; -// } - -// const price = tokenPriceMap.get(convertTo, undefined); -// if (!price) { -// return `ERR`; -// } - -// let defaultDigits; -// switch (convertTo) { -// case Currency.BTC: -// case Currency.ETH: -// defaultDigits = 3; break; -// default: -// defaultDigits = 2; -// } -// defaultDigits = digits === undefined ? defaultDigits : digits; -// return `${amount.multipliedBy(price).toFixed(defaultDigits)}`; -// } - -const defaultState = { // Entries must be immutable - decimals: 0, -}; - -class TokenBalanceClass extends React.Component { - constructor(props: Props) { - super(props); - this.state = defaultState; - } - - public componentDidMount = async (): Promise => { - const { token } = this.props; - - const tokenDetails = AllTokenDetails.get(token as Token, undefined); - const decimals = tokenDetails ? new BigNumber(tokenDetails.decimals.toString()).toNumber() : 0; - this.setState({ decimals }); - } - - public componentWillReceiveProps = async (nextProps: Props): Promise => { - const { token: nextToken } = nextProps; - const { token } = this.props; - - if (nextToken !== token) { - const tokenDetails = AllTokenDetails.get(nextToken as Token, undefined); - const decimals = tokenDetails ? new BigNumber(tokenDetails.decimals.toString()).toNumber() : 0; - this.setState({ decimals }); - } - } - - public render = (): JSX.Element => { - const { token, convertTo, store, digits } = this.props; - const { decimals } = this.state; - const { tokenPrices } = store; - - const amount = new BigNumber(this.props.amount) - .div(new BigNumber(Math.pow(10, decimals))); - - if (!convertTo) { - return <>{digits !== undefined ? amount.toFixed(digits) : amount.toFixed()}; - } - - if (!tokenPrices) { - return <>...; - } - - const tokenPriceMap = tokenPrices.get(token, undefined); - if (!tokenPriceMap) { - return <>...; - } - - const price = tokenPriceMap.get(convertTo, undefined); - if (!price) { - return ERR; - } - - let defaultDigits; - switch (convertTo) { - case Currency.BTC: - case Currency.ETH: - defaultDigits = 3; break; - default: - defaultDigits = 2; - } - defaultDigits = digits === undefined ? defaultDigits : digits; - return <>{amount.multipliedBy(price).toFixed(defaultDigits)}; - } -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - tokenPrices: state.statistics.tokenPrices, - web3: state.trader.web3, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType { - token: Token | OldToken; - amount: string | BigNumber; - convertTo?: Currency; - digits?: number; // Always shows this many digits (e.g. for 3 d.p.: 0.100, 0.111) -} - -export const TokenBalance = connect(mapStateToProps, mapDispatchToProps)(TokenBalanceClass); diff --git a/src/components/pages/Home.tsx b/src/components/allDarknodesPage/AllDarknodes.tsx similarity index 57% rename from src/components/pages/Home.tsx rename to src/components/allDarknodesPage/AllDarknodes.tsx index 381d2d5e..f1a23f99 100644 --- a/src/components/pages/Home.tsx +++ b/src/components/allDarknodesPage/AllDarknodes.tsx @@ -1,41 +1,36 @@ import * as React from "react"; -import { List } from "immutable"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; +import { bindActionCreators } from "redux"; -import { ApplicationData } from "../../store/types"; -import { DarknodeList } from "../darknodeList/DarknodeList"; -import { _catch_ } from "../ErrorBoundary"; - -const defaultState = { // Entries must be immutable - checkingVerification: false, - darknodeList: null as List | null, -}; +import { ApplicationState } from "../../store/applicationState"; +import { AppDispatch } from "../../store/rootReducer"; +import { _catch_ } from "../common/ErrorBoundary"; +import { DarknodeList } from "./darknodeList/DarknodeList"; /** * Home is a page whose principal components are wallet selection to allow users * to log-in, and the hidden orderbook */ -class HomeClass extends React.Component { +class AllDarknodesClass extends React.Component { public constructor(props: Props, context: object) { super(props, context); - this.state = defaultState; } public render = (): JSX.Element => { - const { darknodeList, darknodeNames, darknodeDetails, darknodeRegisteringList } = this.props.store; + const { darknodeList, darknodeNames, darknodeDetails, darknodeRegisteringList, registrySync, address, renNetwork } = this.props.store; return ( -
+
{darknodeRegisteringList.size > 0 ? <>

Continue registering

{_catch_()} {(darknodeList && darknodeList.size > 0) ?

Current darknodes

: null} : null} @@ -44,6 +39,7 @@ class HomeClass extends React.Component { darknodeNames={darknodeNames} darknodeList={darknodeList} darknodeRegisteringList={darknodeRegisteringList} + registrySync={registrySync} />) : null}
@@ -51,18 +47,20 @@ class HomeClass extends React.Component { } } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - address: state.trader.address, - darknodeDetails: state.statistics.darknodeDetails, - darknodeNames: state.statistics.darknodeNames, - darknodeList: state.trader.address ? state.statistics.darknodeList.get(state.trader.address, null) : null, - darknodeRegisteringList: state.statistics.darknodeRegisteringList, - web3: state.trader.web3, + address: state.account.address, + darknodeDetails: state.network.darknodeDetails, + darknodeNames: state.network.darknodeNames, + darknodeList: state.account.address ? state.network.darknodeList.get(state.account.address, null) : null, + darknodeRegisteringList: state.network.darknodeRegisteringList, + registrySync: state.network.registrySync, + renNetwork: state.account.renNetwork, + web3: state.account.web3, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ }, dispatch), }); @@ -70,4 +68,4 @@ const mapDispatchToProps = (dispatch: Dispatch) => ({ interface Props extends ReturnType, ConnectedReturnType { } -export const Home = connect(mapStateToProps, mapDispatchToProps)(HomeClass); +export const AllDarknodes = connect(mapStateToProps, mapDispatchToProps)(AllDarknodesClass); diff --git a/src/components/allDarknodesPage/darknodeList/CardView.tsx b/src/components/allDarknodesPage/darknodeList/CardView.tsx new file mode 100644 index 00000000..03430b10 --- /dev/null +++ b/src/components/allDarknodesPage/darknodeList/CardView.tsx @@ -0,0 +1,83 @@ +import * as React from "react"; + +import { faStar } from "@fortawesome/free-regular-svg-icons"; +import { faFire, faTimes } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Blocky, Currency, CurrencyIcon } from "@renproject/react-components"; +import { Link } from "react-router-dom"; + +import { Token } from "../../../lib/ethereum/tokens"; +import { DarknodesState } from "../../../store/applicationState"; +import { DarknodeID } from "../../common/DarknodeID"; +import { TokenBalance } from "../../common/TokenBalance"; +import { statusText } from "../../darknodePage/statuspage/Registration"; + +interface Props { + darknodeID: string; + darknodeDetails: DarknodesState | null; + name: string | undefined; + quoteCurrency: Currency; + url: string; + faded: boolean | null; + hidable: boolean; + confirmedRemove: boolean; + removeDarknode: () => void; + continuable: boolean; +} + +export const CardView = ({ darknodeID, darknodeDetails, name, quoteCurrency, url, faded, hidable, confirmedRemove, removeDarknode, continuable }: Props) => { + const handleRemoveDarknode = React.useCallback((e: React.MouseEvent): void => { + e.stopPropagation(); + e.preventDefault(); + removeDarknode(); + }, [removeDarknode]); + + return +
+
+ {hidable ?
+ {confirmedRemove ? "Are you sure?" : } +
: null} +
+
+ + + +

{name ? name : }

+ + {continuable ? "Continue registering" : darknodeDetails ? + statusText[darknodeDetails.registrationStatus] : + "" + } + +
+ {darknodeDetails ? +
+
+ + + + + + {" "} + {quoteCurrency.toUpperCase()} +
+
+ + + + + + {" "} + ETH +
+
+ : null + } +
+ ; +}; diff --git a/src/components/allDarknodesPage/darknodeList/DarknodeCard.tsx b/src/components/allDarknodesPage/darknodeList/DarknodeCard.tsx new file mode 100644 index 00000000..cbe84985 --- /dev/null +++ b/src/components/allDarknodesPage/darknodeList/DarknodeCard.tsx @@ -0,0 +1,86 @@ +import * as React from "react"; + +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { bindActionCreators } from "redux"; + +import { darknodeIDHexToBase58 } from "../../../lib/darknode/darknodeID"; +import { RegistrationStatus } from "../../../lib/ethereum/contractReads"; +import { ApplicationState, DarknodesState } from "../../../store/applicationState"; +import { removeDarknode, removeRegisteringDarknode } from "../../../store/network/operatorActions"; +import { AppDispatch } from "../../../store/rootReducer"; +import { CardView } from "./CardView"; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + quoteCurrency: state.network.quoteCurrency, + renNetwork: state.account.renNetwork, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + removeRegisteringDarknode, + removeDarknode, + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType { + darknodeID: string; + darknodeDetails: DarknodesState | null; + name: string | undefined; + publicKey: string | undefined; +} + +export const DarknodeCard = connect(mapStateToProps, mapDispatchToProps)((props: Props) => { + const { actions, darknodeID, darknodeDetails, name, store, publicKey } = props; + const { address, quoteCurrency, renNetwork } = store; + + const [confirmedRemove, setConfirmedRemove] = React.useState(false); + + // If we have the public key and the status is unregistered (or the status is not available yet), then link to + // the registration page + const continuable = (publicKey && ( + !darknodeDetails || + darknodeDetails.registrationStatus === RegistrationStatus.Unregistered + )) || false; + + const handleRemoveDarknode = React.useCallback((): void => { + if (!confirmedRemove) { + setConfirmedRemove(true); + return; + } + + // tslint:disable-next-line: await-promise + if (continuable) { + actions.removeRegisteringDarknode({ darknodeID }); + } else if (address) { + actions.removeDarknode({ darknodeID, operator: address, network: renNetwork.name }); + } + }, [confirmedRemove, continuable, actions, address, darknodeID, renNetwork.name]); + + const faded = darknodeDetails && + darknodeDetails.registrationStatus === RegistrationStatus.Unregistered && + !continuable; + + const hidable = (darknodeDetails && darknodeDetails.registrationStatus === RegistrationStatus.Unregistered) || continuable; + + const darknodeIDBase58 = darknodeIDHexToBase58(darknodeID); + + const url = continuable ? + `/darknode/${darknodeIDBase58}?action=register&public_key=${publicKey}` : + `/darknode/${darknodeIDBase58}`; + + return ; +}); diff --git a/src/components/allDarknodesPage/darknodeList/DarknodeList.tsx b/src/components/allDarknodesPage/darknodeList/DarknodeList.tsx new file mode 100644 index 00000000..bd559498 --- /dev/null +++ b/src/components/allDarknodesPage/darknodeList/DarknodeList.tsx @@ -0,0 +1,51 @@ +import * as React from "react"; + +import { Loading } from "@renproject/react-components"; +import { Map, OrderedSet } from "immutable"; + +import { DarknodesState } from "../../../store/applicationState"; +import { _catch_ } from "../../common/ErrorBoundary"; +import { DarknodeCard } from "./DarknodeCard"; +import { EmptyDarknodeCard } from "./EmptyDarknodeCard"; +import { EmptyDarknodeList } from "./EmptyDarknodeList"; + +interface Props { + darknodeList: OrderedSet | null; + darknodeDetails: Map; + darknodeNames: Map; + darknodeRegisteringList: Map; + registrySync: { progress: number, target: number }; +} + +export const DarknodeList: React.StatelessComponent = ({ + darknodeList, + darknodeDetails, + darknodeNames, + darknodeRegisteringList, + registrySync +}) => { + return
+ {darknodeList === null ?
+ +

Syncing Darknode Registry {registrySync.target !== 0 ? <>({registrySync.progress}/{registrySync.target}) : <>}

+
: <> + {darknodeList && darknodeList.map((darknodeID: string) => { + const details = darknodeDetails.get(darknodeID) || null; + const name = darknodeNames.get(darknodeID); + + return _catch_(, { key: darknodeID }); + }).toArray()} + {darknodeList.size === 0 ? : <> + {darknodeList.size < 2 ? : null} + {darknodeList.size < 3 ? : null} + {darknodeList.size < 4 ? : null} + } + } +
; +}; diff --git a/src/components/darknodeList/EmptyDarknodeCard.tsx b/src/components/allDarknodesPage/darknodeList/EmptyDarknodeCard.tsx similarity index 79% rename from src/components/darknodeList/EmptyDarknodeCard.tsx rename to src/components/allDarknodesPage/darknodeList/EmptyDarknodeCard.tsx index beabe622..9b7f5832 100644 --- a/src/components/darknodeList/EmptyDarknodeCard.tsx +++ b/src/components/allDarknodesPage/darknodeList/EmptyDarknodeCard.tsx @@ -3,7 +3,7 @@ import * as React from "react"; type Props = React.DetailedHTMLProps, HTMLDivElement>; export const EmptyDarknodeCard: React.StatelessComponent = (props) => -
+
diff --git a/src/components/darknodeList/EmptyDarknodeList.tsx b/src/components/allDarknodesPage/darknodeList/EmptyDarknodeList.tsx similarity index 83% rename from src/components/darknodeList/EmptyDarknodeList.tsx rename to src/components/allDarknodesPage/darknodeList/EmptyDarknodeList.tsx index 6b9fa235..198ecc36 100644 --- a/src/components/darknodeList/EmptyDarknodeList.tsx +++ b/src/components/allDarknodesPage/darknodeList/EmptyDarknodeList.tsx @@ -1,10 +1,11 @@ import * as React from "react"; + import { EmptyDarknodeCard } from "./EmptyDarknodeCard"; type Props = React.DetailedHTMLProps, HTMLDivElement>; export const EmptyDarknodeList: React.StatelessComponent = (props) => -
+
diff --git a/src/components/pages/NotFound.tsx b/src/components/common/404.tsx similarity index 94% rename from src/components/pages/NotFound.tsx rename to src/components/common/404.tsx index d29375ac..d7b6034c 100644 --- a/src/components/pages/NotFound.tsx +++ b/src/components/common/404.tsx @@ -4,4 +4,4 @@ export const NotFound = (): JSX.Element =>
404
-
; +
; diff --git a/src/components/common/AccountDropdown.tsx b/src/components/common/AccountDropdown.tsx new file mode 100644 index 00000000..0a678be5 --- /dev/null +++ b/src/components/common/AccountDropdown.tsx @@ -0,0 +1,186 @@ +import * as React from "react"; + +import { Blocky, Loading } from "@renproject/react-components"; +import { connect, ConnectedReturnType } from "react-redux"; +import { bindActionCreators } from "redux"; + +import { className } from "../../lib/react/className"; +import { logout, promptLogin } from "../../store/account/accountActions"; +import { ApplicationState } from "../../store/applicationState"; +import { AppDispatch } from "../../store/rootReducer"; + +const defaultState = { // Entries must be immutable + shown: false, + copied: false, +}; + +// tslint:disable: react-unused-props-and-state +class AccountDropdownClass extends React.Component { + private ref: HTMLDivElement | null = null; + + constructor(props: Props) { + super(props); + this.state = defaultState; + } + + public render = () => { + const { address, web3BrowserName, transactions, confirmations, renNetwork } = this.props.store; + const { copied } = this.state; + + // `pendingTXs` calculates whether or not the user has any ethereum + // transactions that haven't been confirmed yet. + const pendingTXs = transactions.reduce((reduction: boolean, _value, key: string) => { + return reduction || confirmations.get(key, 0) === 0; + }, false); + + const { shown } = this.state; + + return
+
+ {address ? + <> + +
+
+ {web3BrowserName} {pendingTXs ? : <>} +
+
+ {address.substring(0, 8)}...{address.slice(-5)} +
+
+ : + <> +
+
+
+
+
+ Connect {web3BrowserName} +
+
Manage your Darknode
+
+ + } +
+ + {address && shown ? +
+
    +
  • + + {copied ? + Copied + : + Copy to clipboard + } + +
  • +
  • + Log out +
  • + {transactions.size > 0 ? + <> + {transactions.map((_tx, txHash) => { + const confs = confirmations.get(txHash, 0); + return
  • + {confs === 0 ? : <>} + {confs === -1 ? (ERR) {" "} : <>} + {txHash.substring(0, 12)}... + {confs > 0 ? <>{" "}({confs} conf.) : ""} +
  • ; + }).valueSeq().toArray()} + : <> + } +
+
: <> + } +
; + } + + private readonly handleLogin = async (): Promise => { + const { address } = this.props.store; + this.setState({ shown: false }); + if (!address) { + await this.props.actions.promptLogin({ manual: true, redirect: false, showPopup: true, immediatePopup: true }); + } + } + + private readonly handleLogout = async (): Promise => { + this.setState({ shown: false }); + this.props.actions.logout(); + } + + private readonly copyToClipboard = (e: React.MouseEvent): void => { + const el = e.currentTarget.childNodes[0] as Element; + const address = el.getAttribute("data-addr"); + if (address) { + const fauxInput = document.createElement("input"); + document.body.appendChild(fauxInput); + fauxInput.setAttribute("value", address); + fauxInput.select(); + document.execCommand("copy"); + document.body.removeChild(fauxInput); + } + this.setState({ copied: true }); + } + + private readonly setRef = (ref: HTMLDivElement) => { + this.ref = ref; + } + + // tslint:disable-next-line: no-any + private readonly clickAway = (event: any) => { + // tslint:disable-next-line: no-any + if ((this.ref && !this.ref.contains(event.target))) { + this.setState({ shown: false }); + } + document.removeEventListener("mousedown", this.clickAway); + // @ts-ignore + } + + private readonly toggle = () => { + const newShown = !this.state.shown; + this.setState({ shown: newShown }); + + if (newShown) { + document.addEventListener("mousedown", this.clickAway); + } else { + document.removeEventListener("mousedown", this.clickAway); + } + } +} + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + web3BrowserName: state.account.web3BrowserName, + quoteCurrency: state.network.quoteCurrency, + web3: state.account.web3, + transactions: state.network.transactions, + confirmations: state.network.confirmations, + renNetwork: state.account.renNetwork, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + promptLogin, + logout, + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType { +} + +export const AccountDropdown = connect(mapStateToProps, mapDispatchToProps)(AccountDropdownClass); diff --git a/src/components/common/BackgroundTasks.tsx b/src/components/common/BackgroundTasks.tsx new file mode 100644 index 00000000..96a95941 --- /dev/null +++ b/src/components/common/BackgroundTasks.tsx @@ -0,0 +1,245 @@ +// import * as qs from "query-string"; +import * as React from "react"; + +import { OrderedSet } from "immutable"; +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { RouteComponentProps, withRouter } from "react-router-dom"; +import { bindActionCreators } from "redux"; + +import { _catchBackgroundException_ } from "../../lib/react/errors"; +import { lookForLogout, promptLogin } from "../../store/account/accountActions"; +import { ApplicationState } from "../../store/applicationState"; +import { updateTokenPrices } from "../../store/network/networkActions"; +import { + updateCycleAndPendingRewards, updateDarknodeDetails, updateOperatorDarknodes, +} from "../../store/network/operatorActions"; +import { AppDispatch } from "../../store/rootReducer"; +import { getDarknodeParam } from "../darknodePage/Darknode"; + +/** + * BackgroundTasks is the main visual component responsible for displaying different routes + * and running background app loops + */ +class BackgroundTasksClass extends React.Component { + private callUpdatePricesTimeout: NodeJS.Timer | undefined; + private callUpdateRewardsTimeout: NodeJS.Timer | undefined; + private callLookForLogoutInterval: NodeJS.Timer | undefined; + private callUpdateOperatorDarknodesTimeout: NodeJS.Timer | undefined; + private callUpdateSelectedDarknodeTimeout: NodeJS.Timer | undefined; + + public componentDidMount = async (): Promise => { + // const { match: { params }, store: { renNetwork } } = this.props; + + // const darknodeID = getDarknodeParam(params); + + // const queryParams = qs.parse(this.props.location.search); + // const action = typeof queryParams.action === "string" ? queryParams.action : undefined; + + // Sometimes, logging in seems to freeze, to we start loops that don't + // rely on being logged in before attempting to log in + this.setupLoops(); + + // TODO: Detect if web3 is already connected + + // try { + // await this.props.actions.login( + // renNetwork, + // { + // redirect: false, + // showPopup: darknodeID === undefined || action !== undefined, + // immediatePopup: false, + // } + // ); + // } catch (error) { + // _catchBackgroundException_(error, { + // description: "Error logging in on load", + // }); + // } + + this.setupLoopsWithAccount(); + } + + public componentWillReceiveProps = (nextProps: Props): void => { + if (this.props.store.address !== nextProps.store.address) { + this.callUpdateOperatorDarknodes(nextProps).catch(error => { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateOperatorDarknodes "); + }); + } + + const { match: { params: nextParams } } = nextProps; + const { match: { params } } = this.props; + + const nextDarknodeID = getDarknodeParam(nextParams); + const darknodeID = getDarknodeParam(params); + + if (darknodeID !== nextDarknodeID) { + this.callUpdateSelectedDarknode(nextProps).catch(error => { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateSelectedDarknode"); + }); + } + } + + public componentWillUnmount(): void { + // Clear timeouts + if (this.callUpdatePricesTimeout) { clearTimeout(this.callUpdatePricesTimeout); } + if (this.callUpdateRewardsTimeout) { clearTimeout(this.callUpdateRewardsTimeout); } + if (this.callLookForLogoutInterval) { clearTimeout(this.callLookForLogoutInterval); } + if (this.callUpdateOperatorDarknodesTimeout) { clearTimeout(this.callUpdateOperatorDarknodesTimeout); } + if (this.callUpdateSelectedDarknodeTimeout) { clearTimeout(this.callUpdateSelectedDarknodeTimeout); } + } + + public render = (): JSX.Element => <>; + + // Update token prices every 60 seconds + private readonly callUpdatePrices = async (): Promise => { + try { + // tslint:disable-next-line: await-promise + await this.props.actions.updateTokenPrices(); + } catch (error) { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdatePrices"); + } + if (this.callUpdatePricesTimeout) { clearTimeout(this.callUpdatePricesTimeout); } + this.callUpdatePricesTimeout = setTimeout(this.callUpdatePrices, 60 * 1000) as unknown as NodeJS.Timer; + } + + // Update rewards every 120 seconds + private readonly callUpdateRewards = async (): Promise => { + const { web3, renNetwork, tokenPrices } = this.props.store; + let retry = 120; + if (tokenPrices) { + try { + // tslint:disable-next-line: await-promise + await this.props.actions.updateCycleAndPendingRewards(web3, renNetwork, tokenPrices); + } catch (error) { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateRewards"); + } + } else { + retry = 1; + } + if (this.callUpdateRewardsTimeout) { clearTimeout(this.callUpdateRewardsTimeout); } + this.callUpdateRewardsTimeout = setTimeout(this.callUpdateRewards, retry * 1000) as unknown as NodeJS.Timer; + } + + // See if the user has logged out every 5 seconds + private readonly callLookForLogout = async (): Promise => { + if (this.props.store.address) { + await (this.props.actions.lookForLogout() as unknown as Promise).catch((error) => { + _catchBackgroundException_(error, "Error in BackgroundTasks > callLookForLogout"); + }); + } + } + + // Update operator statistics every 120 seconds + private readonly callUpdateOperatorDarknodes = async (props?: Props): Promise => { + props = props || this.props; + + const { web3, address, tokenPrices, darknodeList, darknodeRegisteringList, renNetwork } = props.store; + let timeout = 1; // Retry in a second, unless the call succeeds + if (address) { + try { + let list = null; + if (darknodeRegisteringList.size > 0) { + list = darknodeRegisteringList.keySeq().toOrderedSet(); + } + if (darknodeList) { + list = (list || OrderedSet()).merge(darknodeList); + } + // tslint:disable-next-line: await-promise + await props.actions.updateOperatorDarknodes(web3, renNetwork, address, tokenPrices, list); + timeout = 120; + } catch (error) { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateOperatorDarknodes"); + timeout = 10; + } + } + if (this.callUpdateOperatorDarknodesTimeout) { clearTimeout(this.callUpdateOperatorDarknodesTimeout); } + this.callUpdateOperatorDarknodesTimeout = setTimeout( + this.callUpdateOperatorDarknodes, + timeout * 1000, + ) as unknown as NodeJS.Timer; + } + + // Update selected darknode statistics every 30 seconds + private readonly callUpdateSelectedDarknode = async (props?: Props): Promise => { + props = props || this.props; + + const { match: { params } } = props; + const { web3, tokenPrices, renNetwork } = props.store; + + const darknodeID = getDarknodeParam(params); + + let timeout = 1; // if the action isn't called, try again in 1 second + if (tokenPrices && darknodeID) { + try { + // tslint:disable-next-line: await-promise + await props.actions.updateDarknodeDetails( + web3, + renNetwork, + darknodeID, + tokenPrices, + ); + timeout = 30; + } catch (error) { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateSelectedDarknode"); + timeout = 15; // try again in half the time + } + } + if (this.callUpdateSelectedDarknodeTimeout) { clearTimeout(this.callUpdateSelectedDarknodeTimeout); } + this.callUpdateSelectedDarknodeTimeout = setTimeout( + this.callUpdateSelectedDarknode, + timeout * 1000, + ) as unknown as NodeJS.Timer; + } + + // tslint:disable-next-line:member-ordering + public setupLoops(): void { + this.callUpdatePrices().catch(error => { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdatePrices"); + }); + this.callUpdateRewards().catch(error => { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateRewards"); + }); + this.callUpdateSelectedDarknode().catch(error => { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateSelectedDarknode"); + }); + } + + // tslint:disable-next-line:member-ordering + public setupLoopsWithAccount(): void { + this.callLookForLogoutInterval = setInterval(this.callLookForLogout, 5000); + this.callUpdateOperatorDarknodes().catch(error => { + _catchBackgroundException_(error, "Error in BackgroundTasks > callUpdateOperatorDarknodes"); + }); + } + +} + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + web3: state.account.web3, + tokenPrices: state.network.tokenPrices, + darknodeList: state.account.address ? state.network.darknodeList.get(state.account.address, null) : null, + darknodeRegisteringList: state.network.darknodeRegisteringList, + renNetwork: state.account.renNetwork, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + promptLogin, + lookForLogout, + updateTokenPrices, + updateOperatorDarknodes, + updateDarknodeDetails, + updateCycleAndPendingRewards, + }, dispatch), +}); + +interface Props extends + ReturnType, + ConnectedReturnType, + RouteComponentProps { +} + +export const BackgroundTasks = connect(mapStateToProps, mapDispatchToProps)(withRouter(BackgroundTasksClass)); diff --git a/src/components/common/Change.tsx b/src/components/common/Change.tsx new file mode 100644 index 00000000..2050ceb1 --- /dev/null +++ b/src/components/common/Change.tsx @@ -0,0 +1,11 @@ +import React from "react"; + +interface Props extends React.DetailedHTMLProps, HTMLDivElement> { + change: number; +} + +export const Change = ({ change, className, ...props }: Props) => { + return 0 ? "positive" : change < 0 ? "negative" : "neutral"].join(" ")}> + {change} + ; +}; diff --git a/src/components/common/Connect.tsx b/src/components/common/Connect.tsx new file mode 100644 index 00000000..15d2220c --- /dev/null +++ b/src/components/common/Connect.tsx @@ -0,0 +1,30 @@ +import * as React from "react"; + +import { connect } from "react-redux"; // Custom typings + +import { ApplicationState } from "../../store/applicationState"; +import { MapContainer } from "../overviewPage/mapContainer"; +import { RenVMContainer } from "../renvmPage/renvmContainer"; + +class ConnectClass extends React.Component { + public render = (): JSX.Element => { + const { store: { renNetwork } } = this.props; + + return + + {this.props.children} + + ; + } +} + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + renNetwork: state.account.renNetwork, + }, +}); + +interface Props extends ReturnType { +} + +export const Connect = connect(mapStateToProps)(ConnectClass); diff --git a/src/components/DarknodeID.tsx b/src/components/common/DarknodeID.tsx similarity index 83% rename from src/components/DarknodeID.tsx rename to src/components/common/DarknodeID.tsx index 23d9400d..8cbb9dd2 100644 --- a/src/components/DarknodeID.tsx +++ b/src/components/common/DarknodeID.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { darknodeIDHexToBase58 } from "./pages/Darknode"; +import { darknodeIDHexToBase58 } from "../../lib/darknode/darknodeID"; export const DarknodeID = (props: Props): JSX.Element => { const { darknodeID } = props; diff --git a/src/components/common/ErrorBoundary.tsx b/src/components/common/ErrorBoundary.tsx new file mode 100644 index 00000000..eef121ef --- /dev/null +++ b/src/components/common/ErrorBoundary.tsx @@ -0,0 +1,94 @@ +import * as Sentry from "@sentry/browser"; +import * as React from "react"; + +import { _catchComponentException_ } from "../../lib/react/errors"; + +const defaultState = { // Entries must be immutable + error: null as null | Error, + errorInfo: null as null | React.ErrorInfo, +}; + +export class ErrorBoundary extends React.Component { + + constructor(props: Props) { + super(props); + this.state = defaultState; + } + + public componentDidCatch = (error: Error, errorInfo: React.ErrorInfo) => { + this.setState({ + error, + errorInfo, + }); + _catchComponentException_(error, errorInfo); + } + + public onClose = () => { + if (this.props.onCancel) { this.props.onCancel(); } + this.setState({ + error: null, + errorInfo: null, + }); + } + + /** + * The main render function. + * @dev Should have minimal computation, loops and anonymous functions. + */ + public render(): React.ReactNode { + const { children, popup, onCancel, className, ...props } = this.props; + + if (this.state.errorInfo) { + // Error path + return ( +
+
+

Something went wrong.

+ {!popup ? : <>} +
+
+ + Error details + +
Error details + {this.state.error && this.state.error.toString()} +
+ {this.state.errorInfo.componentStack} +
+
+ {popup ?
+ + +
: null + } +
+ ); + } + // Normally, just render children + return children; + } + + private readonly reportFeedback = () => { + Sentry.showReportDialog(); + } +} + +interface Props extends React.DetailedHTMLProps, HTMLDivElement> { + /** + * Popup specifies whether or not the Error Boundary is being rendered in + * the popup controller. + */ + popup?: boolean; + + /** + * If `popup` is true, then onCancel should also be provided. + */ + onCancel?(): void; +} + +export const _catch_ = ( + children: React.ReactNode, + options?: { key?: string; popup?: boolean; onCancel?(): void } +) => + {children} + ; diff --git a/src/components/common/Footer.tsx b/src/components/common/Footer.tsx new file mode 100644 index 00000000..7fc850e6 --- /dev/null +++ b/src/components/common/Footer.tsx @@ -0,0 +1,48 @@ +import * as React from "react"; + +import { faGithub } from "@fortawesome/free-brands-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { RouteComponentProps, withRouter } from "react-router-dom"; +import { bindActionCreators } from "redux"; + +import { ApplicationState } from "../../store/applicationState"; +import { AppDispatch } from "../../store/rootReducer"; +import { hideMobileMenu } from "../../store/ui/uiActions"; +import { ReactComponent as Help } from "../../styles/images/help.svg"; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + darknodeList: state.account.address ? state.network.darknodeList.get(state.account.address, null) : null, + darknodeDetails: state.network.darknodeDetails, + darknodeNames: state.network.darknodeNames, + quoteCurrency: state.network.quoteCurrency, + mobileMenuActive: state.ui.mobileMenuActive, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + hideMobileMenu, + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType, RouteComponentProps { +} + +export const Footer = connect(mapStateToProps, mapDispatchToProps)(withRouter( + ({ }: Props) => { + + return
+
+
Ren Command Center v2.01
+
+
+ + + +
+
; + } +)); diff --git a/src/components/common/Header.tsx b/src/components/common/Header.tsx new file mode 100644 index 00000000..743296dd --- /dev/null +++ b/src/components/common/Header.tsx @@ -0,0 +1,175 @@ +import * as React from "react"; + +import { faBars } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { RenNetwork, RenNetworks } from "@renproject/contracts"; +import { currencies, Currency, CurrencyIcon, Dropdown } from "@renproject/react-components"; +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { Link, RouteComponentProps, withRouter } from "react-router-dom"; +import { bindActionCreators } from "redux"; + +import { storeRenNetwork } from "../../store/account/accountActions"; +import { ApplicationState } from "../../store/applicationState"; +import { storeQuoteCurrency } from "../../store/network/operatorActions"; +import { AppDispatch } from "../../store/rootReducer"; +import { showMobileMenu } from "../../store/ui/uiActions"; +import { ReactComponent as RenVMIcon } from "../../styles/images/Icon-HyperDrive.svg"; +import { ReactComponent as OverviewIcon } from "../../styles/images/Icon-Overview.svg"; +// import { ReactComponent as English } from "../../styles/images/rp-flag-uk.svg"; +import { AccountDropdown } from "./AccountDropdown"; + +// const languageOptions = new Map() +// .set("EN", +// <> English +// ); + +const networkOptions = new Map() + // .set(RenNetwork.Mainnet, <>Mainnet) + .set(RenNetwork.Chaosnet, <>Chaosnet) + .set(RenNetwork.Testnet, <>Testnet) + .set(RenNetwork.Devnet, <>Devnet) + .set(RenNetwork.Localnet, <>Localnet) + ; + +const getCurrencyOptions = () => { + const options = new Map(); + + for (const currency of currencies) { + options.set(currency.currency, <> + + {" "}{currency.description} + ); + } + + return options; +}; + +const currencyOptions = getCurrencyOptions(); + +/** + * Header is a visual component providing page branding and navigation. + */ +const HeaderClass = (props: Props) => { + + const setCurrency = (currency: string): void => { + props.actions.storeQuoteCurrency({ quoteCurrency: currency as Currency }); + }; + + const setNetwork = (network: string): void => { + props.actions.storeRenNetwork(RenNetworks[network]); + setInterval(() => { + const currentLocation = window.location.pathname; + // history.push("/loading"); + // Reload to clear all stores and cancel timeouts + // (e.g. deposit/withdrawal confirmations) + // tslint:disable-next-line: no-console + console.log(`Reloading page (${currentLocation})`); + window.location.replace(currentLocation); + }, 100); + }; + + // const setLanguage = (language: string): void => { + // // NOT IMPLEMENTED + // } + + const [searchInput, setSearchInput] = React.useState(""); + + const handleInput = (event: React.FormEvent): void => { + const element = (event.target as HTMLInputElement); + setSearchInput(String(element.value).toLowerCase()); + }; + + const { location } = props; + const { address, quoteCurrency, renNetwork } = props.store; + + // const languageDropdownNode = ; + + const networkDropdownNode = ; + + const currencyDropdownNode = + + {" "}{quoteCurrency.toUpperCase()} + + }} + options={currencyOptions} + setValue={setCurrency} + />; + + return ( +
+ {address ?
+ +
: <>} + +
+ +
+ {/*
  • + +
  • */} + +
  • +
    +
    Darknodes
    +
    +
  • + + +
  • +
    +
    RenVM
    +
    +
  • + + {/* {languageDropdownNode} */} + {currencyDropdownNode} + {networkDropdownNode} + +
    +
    + ); +}; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + quoteCurrency: state.network.quoteCurrency, + renNetwork: state.account.renNetwork, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + storeQuoteCurrency, + showMobileMenu, + storeRenNetwork, + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType, + RouteComponentProps { +} + +export const Header = connect(mapStateToProps, mapDispatchToProps)(withRouter(HeaderClass)); diff --git a/src/components/common/LoggingIn.tsx b/src/components/common/LoggingIn.tsx new file mode 100644 index 00000000..6b47885b --- /dev/null +++ b/src/components/common/LoggingIn.tsx @@ -0,0 +1,56 @@ +import * as React from "react"; + +import { connect, ConnectedReturnType } from "react-redux"; +import { bindActionCreators } from "redux"; + +import { _catchBackgroundException_ } from "../../lib/react/errors"; +import { promptLogin } from "../../store/account/accountActions"; +import { ApplicationState } from "../../store/applicationState"; +import { AppDispatch } from "../../store/rootReducer"; +import { EmptyDarknodeList } from "../allDarknodesPage/darknodeList/EmptyDarknodeList"; + +/** + * LoggingIn is a page whose principal components are wallet selection to allow users + * to log-in, and the hidden orderbook + */ +const LoggingInClass = (props: Props) => { + + const { address } = props.store; + + const handleLogin = React.useCallback(async (): Promise => { + if (!address) { + await props.actions.promptLogin({ manual: false, redirect: false, showPopup: true, immediatePopup: false }); + } + }, [address]); + + React.useEffect(() => { + handleLogin().catch((error) => _catchBackgroundException_(error, "Error in LoggingIn > handleLogin")); + }, []); + + return
    + +
    ; +}; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + web3BrowserName: state.account.web3BrowserName, + quoteCurrency: state.network.quoteCurrency, + web3: state.account.web3, + transactions: state.network.transactions, + confirmations: state.network.confirmations, + renNetwork: state.account.renNetwork, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + promptLogin, + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType { +} + +export const LoggingIn = connect(mapStateToProps, mapDispatchToProps)(LoggingInClass); diff --git a/src/components/common/Stat.tsx b/src/components/common/Stat.tsx new file mode 100644 index 00000000..f02697e1 --- /dev/null +++ b/src/components/common/Stat.tsx @@ -0,0 +1,18 @@ +import React from "react"; + +interface StatProps extends React.DetailedHTMLProps, HTMLDivElement> { + message: React.ReactNode; + big?: boolean; + highlight?: boolean; +} + +export const Stat = ({ message, big, highlight, children, className, ...props }: StatProps) => +
    +
    +

    {message}

    +
    {children}
    +
    ; + +interface StatsProps extends React.DetailedHTMLProps, HTMLDivElement> { } + +export const Stats = ({ children }: StatsProps) =>
    {children}
    ; diff --git a/src/components/common/Tabs.tsx b/src/components/common/Tabs.tsx new file mode 100644 index 00000000..d8564072 --- /dev/null +++ b/src/components/common/Tabs.tsx @@ -0,0 +1,29 @@ +import React, { useState } from "react"; + +export const Tabs = ({ tabs, defaultTab, onTab, className, children, ...props }: Props) => { + const [selectedTab, setSelectedTab] = useState(defaultTab || Object.keys(tabs)[0]); + + return
    +
    + {Object.keys(tabs).map((tab) => { + const onClick = () => { + setSelectedTab(tab); + if (onTab) { + onTab(tab); + } + }; + return ; + })} +
    + {tabs[selectedTab]} + {children} +
    ; +}; + +interface Props extends React.DetailedHTMLProps, HTMLDivElement> { + tabs: { + [tab: string]: React.ReactNode; + }; + defaultTab?: string; + onTab?: (tab: string) => void; +} diff --git a/src/components/common/TokenBalance.tsx b/src/components/common/TokenBalance.tsx new file mode 100644 index 00000000..47d9108a --- /dev/null +++ b/src/components/common/TokenBalance.tsx @@ -0,0 +1,61 @@ +import * as React from "react"; + +import { Currency } from "@renproject/react-components"; +import { BigNumber } from "bignumber.js"; +import { connect } from "react-redux"; // Custom typings + +import { AllTokenDetails, OldToken, Token } from "../../lib/ethereum/tokens"; +import { ApplicationState } from "../../store/applicationState"; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + tokenPrices: state.network.tokenPrices, + }, +}); + +interface Props extends ReturnType { + token: Token | OldToken; + amount: string | BigNumber; + convertTo?: Currency; + digits?: number; // Always shows this many digits (e.g. for 3 d.p.: 0.100, 0.111) +} + +export const TokenBalance = connect(mapStateToProps)((props: Props) => { + const { token, convertTo, store, digits } = props; + const { tokenPrices } = store; + + const tokenDetails = AllTokenDetails.get(token as Token, undefined); + const decimals = tokenDetails ? new BigNumber(tokenDetails.decimals.toString()).toNumber() : 0; + + const amount = new BigNumber(props.amount) + .div(new BigNumber(Math.pow(10, decimals))); + + if (!convertTo) { + return <>{digits !== undefined ? amount.toFixed(digits) : amount.toFixed()}; + } + + if (!tokenPrices) { + return <>...; + } + + const tokenPriceMap = tokenPrices.get(token, undefined); + if (!tokenPriceMap) { + return <>...; + } + + const price = tokenPriceMap.get(convertTo, undefined); + if (!price) { + return ERR; + } + + let defaultDigits; + switch (convertTo) { + case Currency.BTC: + case Currency.ETH: + defaultDigits = 3; break; + default: + defaultDigits = 2; + } + defaultDigits = digits === undefined ? defaultDigits : digits; + return <>{amount.multipliedBy(price).toFixed(defaultDigits)}; +}); diff --git a/src/components/popups/Console.tsx b/src/components/common/popups/Console.tsx similarity index 92% rename from src/components/popups/Console.tsx rename to src/components/common/popups/Console.tsx index 3a579b97..143c4671 100644 --- a/src/components/popups/Console.tsx +++ b/src/components/common/popups/Console.tsx @@ -22,7 +22,7 @@ export class Console extends React.Component { const { level } = this.state; const enhanced = level > (NUMERATOR + DENOMINATOR ** 2); return ( -
    +
    {this.props.logs}
    ); diff --git a/src/components/popups/LoggedOut.tsx b/src/components/common/popups/LoggedOut.tsx similarity index 79% rename from src/components/popups/LoggedOut.tsx rename to src/components/common/popups/LoggedOut.tsx index 0ac52595..ca4da2bf 100644 --- a/src/components/popups/LoggedOut.tsx +++ b/src/components/common/popups/LoggedOut.tsx @@ -1,11 +1,12 @@ import * as React from "react"; -import { Blocky } from "@renex/react-components"; +import { Blocky } from "@renproject/react-components"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; +import { bindActionCreators } from "redux"; -import { getWeb3BrowserIcon } from "../../lib/ethereum/browsers"; -import { ApplicationData } from "../../store/types"; +import { getWeb3BrowserIcon } from "../../../lib/ethereum/browsers"; +import { ApplicationState } from "../../../store/applicationState"; +import { AppDispatch } from "../../../store/rootReducer"; /** * LoggedOut is a popup component for prompting a user to select an @@ -39,13 +40,13 @@ const LoggedOutClass: React.StatelessComponent = (props) => {
    ; }; -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - web3BrowserName: state.trader.web3BrowserName, + web3BrowserName: state.account.web3BrowserName, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ }, dispatch), }); diff --git a/src/components/popups/MultiStepPopup.tsx b/src/components/common/popups/MultiStepPopup.tsx similarity index 84% rename from src/components/popups/MultiStepPopup.tsx rename to src/components/common/popups/MultiStepPopup.tsx index c0449dfe..74f84373 100644 --- a/src/components/popups/MultiStepPopup.tsx +++ b/src/components/common/popups/MultiStepPopup.tsx @@ -1,17 +1,17 @@ import * as React from "react"; +import { Loading } from "@renproject/react-components"; import BigNumber from "bignumber.js"; - import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; - -import { _captureBackgroundException_, _captureInteractionException_ } from "../../lib/errors"; -import { ErrorCanceledByUser } from "../../lib/ethereum/wallet"; -import { clearPopup } from "../../store/actions/popup/popupActions"; -import { ApplicationData } from "../../store/types"; -import { Loading } from "../Loading"; +import { bindActionCreators } from "redux"; -import Warn from "../../styles/images/warn.svg"; +import { ErrorCanceledByUser } from "../../../lib/ethereum/getWeb3"; +import { className } from "../../../lib/react/className"; +import { _catchBackgroundException_, _catchInteractionException_ } from "../../../lib/react/errors"; +import { ApplicationState } from "../../../store/applicationState"; +import { clearPopup } from "../../../store/popup/popupActions"; +import { AppDispatch } from "../../../store/rootReducer"; +import Warn from "../../../styles/images/warn.svg"; const defaultState = { // Entries must be immutable running: false, @@ -38,9 +38,7 @@ class MultiStepPopupClass extends React.Component { if (!this.props.confirm) { this.run() .catch((error) => { - _captureBackgroundException_(error, { - description: "Error in getAtomicBalances action", - }); + _catchBackgroundException_(error, "Error in MultiStepPopup > running steps"); }); } } @@ -73,7 +71,7 @@ class MultiStepPopupClass extends React.Component {
    {!ignoreWarning ? - : null @@ -96,13 +94,13 @@ class MultiStepPopupClass extends React.Component { const checked = (currentStep > index) || (currentStep === index && !!error); return
  • Step {index + 1}: {step.name} @@ -122,7 +120,7 @@ class MultiStepPopupClass extends React.Component {
    {running ? // Show spinning icon while running through steps - : + : complete ? // Get user to click Close instead of automatically closing popup <> @@ -146,7 +144,7 @@ class MultiStepPopupClass extends React.Component { Cancel
    ; }; -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - web3BrowserName: state.trader.web3BrowserName, + web3BrowserName: state.account.web3BrowserName, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ }, dispatch), }); diff --git a/src/components/popups/PopupController.tsx b/src/components/common/popups/PopupController.tsx similarity index 75% rename from src/components/popups/PopupController.tsx rename to src/components/common/popups/PopupController.tsx index 9a6762e8..de152fad 100644 --- a/src/components/popups/PopupController.tsx +++ b/src/components/common/popups/PopupController.tsx @@ -1,9 +1,11 @@ import * as React from "react"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; +import { bindActionCreators } from "redux"; -import { ApplicationData } from "../../store/types"; +import { className } from "../../../lib/react/className"; +import { ApplicationState } from "../../../store/applicationState"; +import { AppDispatch } from "../../../store/rootReducer"; import { _catch_ } from "../ErrorBoundary"; /** @@ -15,7 +17,7 @@ class PopupControllerClass extends React.Component { const { popup, overlay, onCancel } = this.props.store.popup; return (<> -
    +
    {this.props.children}
    {popup ?
    @@ -35,13 +37,13 @@ class PopupControllerClass extends React.Component { } } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { popup: state.popup, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ }, dispatch), }); diff --git a/src/components/popups/SelectWeb3Account.tsx b/src/components/common/popups/SelectWeb3Account.tsx similarity index 87% rename from src/components/popups/SelectWeb3Account.tsx rename to src/components/common/popups/SelectWeb3Account.tsx index 8b0b33ee..50d5f4f5 100644 --- a/src/components/popups/SelectWeb3Account.tsx +++ b/src/components/common/popups/SelectWeb3Account.tsx @@ -1,12 +1,12 @@ import * as React from "react"; -import { Blocky } from "@renex/react-components"; +import { Blocky, Loading } from "@renproject/react-components"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; +import { bindActionCreators } from "redux"; -import { _captureBackgroundException_ } from "../../lib/errors"; -import { ApplicationData } from "../../store/types"; -import { Loading } from "../Loading"; +import { _catchBackgroundException_ } from "../../../lib/react/errors"; +import { ApplicationState } from "../../../store/applicationState"; +import { AppDispatch } from "../../../store/rootReducer"; const defaultState = { // Entries must be immutable accounts: null as string[] | null, @@ -85,7 +85,7 @@ class SelectWeb3AccountClass extends React.Component if (isNaN(selectedAccountIndex) || accounts === null || accounts.length < selectedAccountIndex) { const description = "No account selected in onSelectAccount"; - _captureBackgroundException_(new Error(description), { + _catchBackgroundException_(new Error(description), { description, }); return; @@ -95,12 +95,12 @@ class SelectWeb3AccountClass extends React.Component } } -const mapStateToProps = (_state: ApplicationData) => ({ +const mapStateToProps = (_state: ApplicationState) => ({ store: { }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ }, dispatch), }); diff --git a/src/components/popups/SigningPopup.tsx b/src/components/common/popups/SigningPopup.tsx similarity index 96% rename from src/components/popups/SigningPopup.tsx rename to src/components/common/popups/SigningPopup.tsx index b76177cf..a9bb4f58 100644 --- a/src/components/popups/SigningPopup.tsx +++ b/src/components/common/popups/SigningPopup.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { Loading } from "../Loading"; +import { Loading } from "@renproject/react-components"; const defaultState = { // Entries must be immutable error: null as string | null, diff --git a/src/components/popups/WithdrawPopup.tsx b/src/components/common/popups/WithdrawPopup.tsx similarity index 50% rename from src/components/popups/WithdrawPopup.tsx rename to src/components/common/popups/WithdrawPopup.tsx index af8c4720..82170550 100644 --- a/src/components/popups/WithdrawPopup.tsx +++ b/src/components/common/popups/WithdrawPopup.tsx @@ -2,15 +2,19 @@ import * as React from "react"; import { faPlus, faTimes } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Loading, TokenIcon } from "@renproject/react-components"; +import { TxStatus } from "@renproject/ren"; import { List } from "immutable"; import { connect, ConnectedReturnType } from "react-redux"; -import { bindActionCreators, Dispatch } from "redux"; -import { validate } from "wallet-address-validator"; +import { bindActionCreators } from "redux"; -import { Token } from "../../lib/ethereum/tokens"; -import { addToWithdrawAddresses, removeFromWithdrawAddresses } from "../../store/actions/statistics/operatorActions"; -import { ApplicationData } from "../../store/types"; -import { Loading } from "../Loading"; +import { AllTokenDetails, Token } from "../../../lib/ethereum/tokens"; +import { className } from "../../../lib/react/className"; +import { ApplicationState } from "../../../store/applicationState"; +import { + addToWithdrawAddresses, removeFromWithdrawAddresses, +} from "../../../store/network/operatorActions"; +import { AppDispatch } from "../../../store/rootReducer"; enum Stage { Pending, @@ -27,6 +31,25 @@ const defaultState = { // Entries must be immutable newAddressValid: false, }; +const renderTxStatus = (status: TxStatus | null) => { + switch (status) { + case null: + return "Submitting"; + case TxStatus.TxStatusNil: + return "Submitting"; + case TxStatus.TxStatusConfirming: + return "Waiting for confirmations"; + case TxStatus.TxStatusPending: + return "Executing"; + case TxStatus.TxStatusExecuting: + return "Executing"; + case TxStatus.TxStatusDone: + return "Done"; + case TxStatus.TxStatusReverted: + return "Reverted"; + } +}; + class WithdrawPopupClass extends React.Component { constructor(props: Props) { super(props); @@ -37,43 +60,51 @@ class WithdrawPopupClass extends React.Component { // } public render = (): JSX.Element => { - const { selectedAddress, newAddress, newAddressValid } = this.state; - const { store: { withdrawAddresses }, token } = this.props; + const { stage, selectedAddress, newAddress, newAddressValid } = this.state; + const { status, store: { withdrawAddresses }, token } = this.props; return
    -

    Select {token} withdraw address

    -
    - {withdrawAddresses.get(token, List()).map((withdrawAddress: string) => { - return
    - - -
    ; - }).toArray()} -
    -
    -
    - - -
    -
    +

    Select {token} withdraw address

    + {stage === Stage.Pending || stage === Stage.Error ? + <> +
    + {withdrawAddresses.get(token, List()).map((withdrawAddress: string) => { + return
    + + +
    ; + }).toArray()} +
    +
    +
    + + +
    +
    + : <> + {status === TxStatus.TxStatusConfirming || status === TxStatus.TxStatusExecuting || status === TxStatus.TxStatusPending || status === TxStatus.TxStatusDone ? <> + The withdrawal has been submitted to RenVM. Your funds will be available shortly.
    + Status: {renderTxStatus(status)} + : <>} + } {this.renderButtons()}
    ; } @@ -102,7 +133,11 @@ class WithdrawPopupClass extends React.Component { private readonly handleAddressInput = (event: React.FormEvent) => { const address = this.handleInput(event); - const newAddressValid = validate(address, this.props.token, "prod") || validate(address, this.props.token, "testnet"); + const tokenDetails = AllTokenDetails.get(this.props.token); + if (!tokenDetails) { + return; + } + const newAddressValid = tokenDetails.validator(address, this.props.store.renNetwork.networkID !== 1); this.setState({ newAddressValid }); } @@ -127,7 +162,7 @@ class WithdrawPopupClass extends React.Component {
    ; case Stage.Error: return <> - {error ?

    {error}

    : null} + {error ?

    {error}

    : null}
    @@ -153,21 +188,21 @@ class WithdrawPopupClass extends React.Component { try { await withdraw(selectedAddress); + this.setState({ stage: Stage.Done }); } catch (error) { this.setState({ stage: Stage.Error, error: error.message || error }); - return; } - this.setState({ stage: Stage.Done }); } } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - withdrawAddresses: state.statistics.withdrawAddresses, + renNetwork: state.account.renNetwork, + withdrawAddresses: state.network.withdrawAddresses, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ addToWithdrawAddresses, removeFromWithdrawAddresses, @@ -176,6 +211,7 @@ const mapDispatchToProps = (dispatch: Dispatch) => ({ interface Props extends ReturnType, ConnectedReturnType { token: Token; + status: TxStatus; withdraw(address: string): Promise; onDone(): void; onCancel(): void; diff --git a/src/components/common/sidebar/Sidebar.tsx b/src/components/common/sidebar/Sidebar.tsx new file mode 100644 index 00000000..d06152f3 --- /dev/null +++ b/src/components/common/sidebar/Sidebar.tsx @@ -0,0 +1,158 @@ +import * as React from "react"; + +import { + faExternalLinkAlt, faGlobeAmericas, faPlus, faThLarge, faTimes, +} from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { Link, RouteComponentProps, withRouter } from "react-router-dom"; +import { bindActionCreators } from "redux"; + +import { darknodeIDHexToBase58 } from "../../../lib/darknode/darknodeID"; +import { RegistrationStatus } from "../../../lib/ethereum/contractReads"; +import { promptLogin } from "../../../store/account/accountActions"; +import { ApplicationState } from "../../../store/applicationState"; +import { AppDispatch } from "../../../store/rootReducer"; +import { hideMobileMenu } from "../../../store/ui/uiActions"; +import { ReactComponent as RenVMIcon } from "../../../styles/images/Icon-HyperDrive.svg"; +import { ReactComponent as Search } from "../../../styles/images/search.svg"; +import { SidebarIcon } from "./SidebarIcon"; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + darknodeList: state.account.address ? state.network.darknodeList.get(state.account.address, null) : null, + darknodeDetails: state.network.darknodeDetails, + darknodeNames: state.network.darknodeNames, + quoteCurrency: state.network.quoteCurrency, + mobileMenuActive: state.ui.mobileMenuActive, + web3BrowserName: state.account.web3BrowserName, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + hideMobileMenu, + promptLogin, + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType, RouteComponentProps { + selectedDarknode: string | undefined; +} +/** + * Sidebar displays stats about an operator's darknodes collectively, + * as well as a breakdown of each darknode + */ +export const Sidebar = connect(mapStateToProps, mapDispatchToProps)(withRouter( + ({ selectedDarknode, store, actions, location }: Props) => { + const { address, darknodeList, darknodeDetails, darknodeNames, quoteCurrency, mobileMenuActive, web3BrowserName } = store; + + const [searchFilter, setSearchFilter] = React.useState(""); + + const handleInput = (event: React.FormEvent): void => { + const element = (event.target as HTMLInputElement); + setSearchFilter(String(element.value).toLowerCase()); + }; + + const handleLogin = async () => { + await actions.promptLogin({ manual: true, redirect: false, showPopup: true, immediatePopup: true }); + }; + + return <> + + {!address ?
    +
    + Connect {web3BrowserName} +
    : <>} + ; + } +)); diff --git a/src/components/common/sidebar/SidebarIcon.tsx b/src/components/common/sidebar/SidebarIcon.tsx new file mode 100644 index 00000000..e695879f --- /dev/null +++ b/src/components/common/sidebar/SidebarIcon.tsx @@ -0,0 +1,79 @@ +import * as React from "react"; + +import { faStar } from "@fortawesome/free-regular-svg-icons"; +import { faFire } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Blocky, Currency, CurrencyIcon } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; +import { Link } from "react-router-dom"; + +import { darknodeIDHexToBase58 } from "../../../lib/darknode/darknodeID"; +import { Token } from "../../../lib/ethereum/tokens"; +import { className } from "../../../lib/react/className"; +import { DarknodeID } from "../DarknodeID"; +import { TokenBalance } from "../TokenBalance"; + +interface Props { + darknodeID: string; + storedName: string | undefined; + active: boolean; + faded: boolean; + feesEarnedTotalEth: BigNumber | string | undefined; + ethBalance: BigNumber | string | undefined; + quoteCurrency: Currency; + hideMobileMenu: () => void; +} + +/** + * Sidebar displays stats about an operator's darknodes collectively, + * as well as a breakdown of each darknode + */ +export const SidebarIcon = ({ darknodeID, storedName, active, faded, quoteCurrency, feesEarnedTotalEth, ethBalance, hideMobileMenu }: Props) => { + const name = storedName ? storedName : ; + + const darknodeIDBase58 = darknodeIDHexToBase58(darknodeID); + + return +
    +
    + +
    +
    +
    {name}
    +
    +
    + {feesEarnedTotalEth ? <> + + + + + + {" "} + + {quoteCurrency.toUpperCase()} + + : null} +
    +
    + {ethBalance ? <> + + + + + {" "}ETH + : null + } +
    +
    +
    +
    + ; +}; diff --git a/src/components/darknodeList/DarknodeCard.tsx b/src/components/darknodeList/DarknodeCard.tsx deleted file mode 100644 index 177d9159..00000000 --- a/src/components/darknodeList/DarknodeCard.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import * as React from "react"; - -import { faStar } from "@fortawesome/free-regular-svg-icons"; -import { faFire, faTimes } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { Link } from "react-router-dom"; -import { bindActionCreators, Dispatch } from "redux"; - -import { Blocky } from "@renex/react-components"; -import { Token } from "../../lib/ethereum/tokens"; -import { RegistrationStatus, removeDarknode, removeRegisteringDarknode } from "../../store/actions/statistics/operatorActions"; -import { ApplicationData, Currency, DarknodeDetails } from "../../store/types"; -import { CurrencyIcon } from "../CurrencyIcon"; -import { DarknodeID } from "../DarknodeID"; -import { darknodeIDHexToBase58 } from "../pages/Darknode"; -import { statusText } from "../statuspage/Registration"; -import { TokenBalance } from "../TokenBalance"; - -const defaultState = { // Entries must be immutable - confirmedRemove: false, -}; - -class DarknodeCardClass extends React.Component { - - public constructor(props: Props, context: object) { - super(props, context); - this.state = defaultState; - } - - public render = (): JSX.Element => { - const { darknodeID, darknodeDetails, name, store, publicKey } = this.props; - const { quoteCurrency } = store; - const { confirmedRemove } = this.state; - - // If we have the public key and the status is unregistered (or the status is not available yet), then link to - // the registration page - const continuable = publicKey && ( - !darknodeDetails || - darknodeDetails.registrationStatus === RegistrationStatus.Unregistered - ); - - const faded = darknodeDetails && - darknodeDetails.registrationStatus === RegistrationStatus.Unregistered && - !continuable; - - const hidable = (darknodeDetails && darknodeDetails.registrationStatus === RegistrationStatus.Unregistered) || continuable; - - const darknodeIDBase58 = darknodeIDHexToBase58(darknodeID); - - const url = continuable ? - `/darknode/${darknodeIDBase58}?action=register&public_key=${publicKey}` : - `/darknode/${darknodeIDBase58}`; - - return ( - -
    -
    - {hidable ?
    - {confirmedRemove ? "Are you sure?" : } -
    : null} -
    -
    - - - -

    {name ? name : }

    - - {continuable ? "Continue registering" : darknodeDetails ? - statusText[darknodeDetails.registrationStatus] : - "" - } - -
    - {darknodeDetails ? -
    -
    - - - - - - {" "} - {quoteCurrency.toUpperCase()} -
    -
    - - - - - - {" "} - ETH -
    -
    - : null - } -
    - - ); - } - - private readonly removeDarknode = (e: React.MouseEvent): void => { - e.stopPropagation(); - e.preventDefault(); - - const { confirmedRemove } = this.state; - - if (!confirmedRemove) { - this.setState({ confirmedRemove: true }); - return; - } - - const { darknodeID, darknodeDetails, publicKey, store: { address } } = this.props; - - // If we have the public key and the status is unregistered (or the status is not available yet), then link to - // the registration page - const continuable = publicKey && ( - !darknodeDetails || - darknodeDetails.registrationStatus === RegistrationStatus.Unregistered - ); - - // tslint:disable-next-line: await-promise - if (continuable) { - this.props.actions.removeRegisteringDarknode({ darknodeID }); - } else if (address) { - this.props.actions.removeDarknode({ darknodeID, operator: address }); - } - - } -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - address: state.trader.address, - quoteCurrency: state.statistics.quoteCurrency, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - removeRegisteringDarknode, - removeDarknode, - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType { - darknodeID: string; - darknodeDetails: DarknodeDetails | null; - name: string | undefined; - publicKey: string | undefined; -} - -export const DarknodeCard = connect(mapStateToProps, mapDispatchToProps)(DarknodeCardClass); diff --git a/src/components/darknodeList/DarknodeList.tsx b/src/components/darknodeList/DarknodeList.tsx deleted file mode 100644 index b19db907..00000000 --- a/src/components/darknodeList/DarknodeList.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import * as React from "react"; - -import { List, Map } from "immutable"; - -import { DarknodeDetails } from "../../store/types"; -import { _catch_ } from "../ErrorBoundary"; -import { Loading } from "../Loading"; -import { DarknodeCard } from "./DarknodeCard"; -import { EmptyDarknodeCard } from "./EmptyDarknodeCard"; -import { EmptyDarknodeList } from "./EmptyDarknodeList"; - -export const DarknodeList: React.StatelessComponent = ({ - darknodeList, - darknodeDetails, - darknodeNames, - darknodeRegisteringList, -}) => { - return
    - {darknodeList === null ?
    : <> - {darknodeList && darknodeList.map((darknodeID: string) => { - const details = darknodeDetails.get(darknodeID) || null; - const name = darknodeNames.get(darknodeID); - - return _catch_(, { key: darknodeID }); - }).toArray()} - {darknodeList.size === 0 ? : <> - {darknodeList.size < 2 ? : null} - {darknodeList.size < 3 ? : null} - {darknodeList.size < 4 ? : null} - } - } -
    ; -}; - -interface Props { - darknodeList: List | null; - darknodeDetails: Map; - darknodeNames: Map; - darknodeRegisteringList: Map; -} diff --git a/src/components/pages/Darknode.tsx b/src/components/darknodePage/Darknode.tsx similarity index 72% rename from src/components/pages/Darknode.tsx rename to src/components/darknodePage/Darknode.tsx index 3933b746..625627d0 100644 --- a/src/components/pages/Darknode.tsx +++ b/src/components/darknodePage/Darknode.tsx @@ -2,16 +2,17 @@ import * as qs from "query-string"; import * as React from "react"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { RouteComponentProps, withRouter } from "react-router"; -import { bindActionCreators, Dispatch } from "redux"; -import { toChecksumAddress } from "web3-utils"; - -import { EncodedData, Encodings } from "../../lib/encodedData"; -import { addRegisteringDarknode, RegistrationStatus, setDarknodeName } from "../../store/actions/statistics/operatorActions"; -import { ApplicationData } from "../../store/types"; -import { _catch_ } from "../ErrorBoundary"; -import { StatusPage } from "../statuspage/StatusPage"; -import { NotFound } from "./NotFound"; +import { RouteComponentProps, withRouter } from "react-router-dom"; +import { bindActionCreators } from "redux"; + +import { darknodeIDBase58ToHex } from "../../lib/darknode/darknodeID"; +import { RegistrationStatus } from "../../lib/ethereum/contractReads"; +import { ApplicationState } from "../../store/applicationState"; +import { addRegisteringDarknode, setDarknodeName } from "../../store/network/operatorActions"; +import { AppDispatch } from "../../store/rootReducer"; +import { NotFound } from "../common/404"; +import { _catch_ } from "../common/ErrorBoundary"; +import { StatusPage } from "./statuspage/StatusPage"; export enum DarknodeAction { View = "view", @@ -19,14 +20,6 @@ export enum DarknodeAction { Deregister = "deregister", } -const darknodeIDBase58ToHex = (darknodeID: string): string => - toChecksumAddress( - (`0x${new EncodedData(darknodeID, Encodings.BASE58).toHex("").slice(4)}`).toLowerCase() - ); - -export const darknodeIDHexToBase58 = (darknodeID: string): string => - new EncodedData(`0x1B14${darknodeID.slice(2)}`, Encodings.HEX).toBase58(); - export const getDarknodeParam = (params: unknown): string | undefined => { const { darknodeID: darknodeID58 } = params as { darknodeID: string | undefined }; let darknodeID; @@ -102,22 +95,17 @@ class DarknodeClass extends React.Component { return ; } - return ( -
    - {/*
    */} -
    - {_catch_()} -
    -
    - ); + return
    + {_catch_()} +
    ; } private readonly handleNewProps = (nextProps: Props, firstTime: boolean): void => { @@ -147,15 +135,15 @@ class DarknodeClass extends React.Component { } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - address: state.trader.address, - darknodeDetails: state.statistics.darknodeDetails, - darknodeNames: state.statistics.darknodeNames, + address: state.account.address, + darknodeDetails: state.network.darknodeDetails, + darknodeNames: state.network.darknodeNames, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ setDarknodeName, addRegisteringDarknode, diff --git a/src/components/darknodePage/statuspage/FeesItem.tsx b/src/components/darknodePage/statuspage/FeesItem.tsx new file mode 100644 index 00000000..e07ba41b --- /dev/null +++ b/src/components/darknodePage/statuspage/FeesItem.tsx @@ -0,0 +1,96 @@ +import * as React from "react"; + +import { faChevronRight } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Loading } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { bindActionCreators } from "redux"; + +import { AllTokenDetails, OldToken, Token } from "../../../lib/ethereum/tokens"; +import { waitForTX } from "../../../lib/ethereum/waitForTX"; +import { withdrawReward } from "../../../store/account/darknodeActions"; +import { ApplicationState } from "../../../store/applicationState"; +import { updateDarknodeDetails } from "../../../store/network/operatorActions"; +import { AppDispatch } from "../../../store/rootReducer"; + +const minimumShiftedAmount = 0.00016; + +const FeesItemClass = ({ darknodeID, token, amount, disabled, actions, store }: Props) => { + const [loading, setLoading] = React.useState(false); + + const tokenDetails = AllTokenDetails.get(token); + const wrapped = tokenDetails ? tokenDetails.wrapped : false; + const decimals = tokenDetails ? tokenDetails.decimals : 8; + + const handleWithdraw = React.useCallback(async (): Promise => { + const { web3, tokenPrices, address, renNetwork } = store; + setLoading(true); + + if (address) { + try { + // tslint:disable-next-line: await-promise + await actions.withdrawReward(darknodeID, token, actions.waitForTX); + } catch (error) { + setLoading(false); + return; + } + // tslint:disable-next-line: await-promise + await actions.updateDarknodeDetails(web3, renNetwork, darknodeID, tokenPrices); + } + + setLoading(false); + }, [actions, darknodeID, store, token]); + + let isDisabled = false; + let title = ""; + if (disabled) { + isDisabled = true; + title = "Must be operator to withdraw"; + } else if ((new BigNumber(amount)).lte(0)) { + isDisabled = true; + title = "No fees to withdraw"; + } else if (wrapped && new BigNumber(amount).lte(new BigNumber(minimumShiftedAmount).times(new BigNumber(10).exponentiatedBy(decimals)))) { + isDisabled = true; + title = `Must have at least ${minimumShiftedAmount} ${token} to withdraw`; + } + + return ( + + ); +}; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + web3: state.account.web3, + tokenPrices: state.network.tokenPrices, + address: state.account.address, + withdrawAddresses: state.network.withdrawAddresses, + renNetwork: state.account.renNetwork, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + withdrawReward, + updateDarknodeDetails, + waitForTX, + }, dispatch), +}); + +// tslint:disable: react-unused-props-and-state +interface Props extends ReturnType, ConnectedReturnType { + disabled: boolean; + token: Token | OldToken; + amount: string | BigNumber; + darknodeID: string; +} + +export const FeesItem = connect(mapStateToProps, mapDispatchToProps)(FeesItemClass); diff --git a/src/components/statuspage/Notifications.tsx b/src/components/darknodePage/statuspage/Notifications.tsx similarity index 74% rename from src/components/statuspage/Notifications.tsx rename to src/components/darknodePage/statuspage/Notifications.tsx index f00e803e..0f687756 100644 --- a/src/components/statuspage/Notifications.tsx +++ b/src/components/darknodePage/statuspage/Notifications.tsx @@ -1,14 +1,16 @@ import * as React from "react"; -import BigNumber from "bignumber.js"; - -import { faExclamationTriangle, faInfoCircle, faTimesCircle } from "@fortawesome/free-solid-svg-icons"; +import { + faExclamationTriangle, faInfoCircle, faTimesCircle, +} from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { RenNetworkDetails } from "@renproject/contracts"; +import BigNumber from "bignumber.js"; -import { RegistrationStatus } from "../../store/actions/statistics/operatorActions"; -import { DarknodeDetails } from "../../store/types"; +import { RegistrationStatus } from "../../../lib/ethereum/contractReads"; +import { DarknodesState } from "../../../store/applicationState"; -const lowValue = new BigNumber(Math.pow(10, 18)).multipliedBy(0.1); +const lowValue = new BigNumber(Math.pow(10, 18)).multipliedBy(0.01); enum NotificationType { Warning = "notification--warning", @@ -23,7 +25,7 @@ const notificationType = { }; export const Notifications: React.StatelessComponent = (props) => { - const { isOperator, darknodeDetails } = props; + const { isOperator, darknodeDetails, renNetwork } = props; let notification; if ( @@ -33,7 +35,7 @@ export const Notifications: React.StatelessComponent = (props) => { ) { notification = { title: "Registration in progress!", - detail: "Your darknode will be registered within 24 hours.", + detail: `Your darknode will be registered within ${renNetwork.name === "chaosnet" ? "8 days" : "24 hours"}.`, type: NotificationType.Information, }; } else if ( @@ -43,7 +45,7 @@ export const Notifications: React.StatelessComponent = (props) => { ) { notification = { title: "Deregistration in progress.", - detail: "Your darknode will be deregistered within 24 hours.", + detail: `Your darknode will be deregistered within ${renNetwork.name === "chaosnet" ? "8 days" : "24 hours"}.`, type: NotificationType.Information, }; } else if ( @@ -53,7 +55,7 @@ export const Notifications: React.StatelessComponent = (props) => { ) { notification = { title: "Darknode deregistered.", - detail: "You will be able to withdraw your REN within 24 hours.", + detail: `You will be able to withdraw your REN within ${renNetwork.name === "chaosnet" ? "8 days" : "24 hours"}.`, type: NotificationType.Information, }; } else if ( @@ -84,5 +86,6 @@ export const Notifications: React.StatelessComponent = (props) => { interface Props { isOperator: boolean; - darknodeDetails: DarknodeDetails | null; + darknodeDetails: DarknodesState | null; + renNetwork: RenNetworkDetails; } diff --git a/src/components/darknodePage/statuspage/OldFees.tsx b/src/components/darknodePage/statuspage/OldFees.tsx new file mode 100644 index 00000000..9eed7567 --- /dev/null +++ b/src/components/darknodePage/statuspage/OldFees.tsx @@ -0,0 +1,84 @@ +import * as React from "react"; + +import { CurrencyIcon, TokenIcon } from "@renproject/react-components"; +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { bindActionCreators } from "redux"; + +import { ApplicationState, DarknodesState } from "../../../store/applicationState"; +import { AppDispatch } from "../../../store/rootReducer"; +import { TokenBalance } from "../../common/TokenBalance"; +import { FeesItem } from "./FeesItem"; + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + quoteCurrency: state.network.quoteCurrency, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType { + isOperator: boolean; + darknodeDetails: DarknodesState | null; +} + +export const OldFees = connect(mapStateToProps, mapDispatchToProps)( + (props: Props) => { + const { darknodeDetails, store, isOperator } = props; + const { + quoteCurrency, + } = store; + + const oldFees = []; + if (darknodeDetails) { + for (const [token, balance] of darknodeDetails.oldFeesEarned.toArray()) { + if (balance.isZero()) { + continue; + } + oldFees.push( + + + {" "} + {token} + + + + + + + + {" "} + + {quoteCurrency.toUpperCase()} + + + {isOperator ? + + : <>} + ); + } + } + + return oldFees.length > 0 ? <> + + + Old fees + + + {oldFees} + : <>; + } +); diff --git a/src/components/statuspage/Registration.tsx b/src/components/darknodePage/statuspage/Registration.tsx similarity index 69% rename from src/components/statuspage/Registration.tsx rename to src/components/darknodePage/statuspage/Registration.tsx index ab83e743..8b7467bc 100644 --- a/src/components/statuspage/Registration.tsx +++ b/src/components/darknodePage/statuspage/Registration.tsx @@ -1,17 +1,19 @@ import * as React from "react"; +import { Loading } from "@renproject/react-components"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; +import { bindActionCreators } from "redux"; -import { _captureInteractionException_ } from "../../lib/errors"; +import { NULL, RegistrationStatus } from "../../../lib/ethereum/contractReads"; +import { _catchInteractionException_ } from "../../../lib/react/errors"; import { - RegistrationStatus, - updateDarknodeStatistics, - updateOperatorStatistics -} from "../../store/actions/statistics/operatorActions"; -import { showDeregisterPopup, showRefundPopup, showRegisterPopup } from "../../store/actions/statistics/operatorPopupActions"; -import { ApplicationData, DarknodeDetails } from "../../store/types"; -import { Loading } from "../Loading"; + showDeregisterPopup, showRefundPopup, showRegisterPopup, +} from "../../../store/account/operatorPopupActions"; +import { ApplicationState, DarknodesState } from "../../../store/applicationState"; +import { + updateDarknodeDetails, updateOperatorDarknodes, +} from "../../../store/network/operatorActions"; +import { AppDispatch } from "../../../store/rootReducer"; export const statusText = { [RegistrationStatus.Unknown]: "Loading...", @@ -51,18 +53,18 @@ class RegistrationClass extends React.Component { public render = (): JSX.Element => { const { isOperator, registrationStatus, publicKey } = this.props; - const { address, minimumBond, tokenPrices } = this.props.store; + const { address, tokenPrices } = this.props.store; const { active } = this.state; const disabled = active || !address; - const registrationDisabled = disabled || !publicKey || !minimumBond || !tokenPrices; + const registrationDisabled = disabled || !publicKey || !tokenPrices; const noStatus = (registrationStatus === RegistrationStatus.Unregistered) || (isOperator && registrationStatus === RegistrationStatus.Refundable); const noOperator = (registrationStatus === RegistrationStatus.Unregistered) && this.props.darknodeDetails && - this.props.darknodeDetails.operator === "0x0000000000000000000000000000000000000000"; + this.props.darknodeDetails.operator === NULL; return (
    @@ -71,13 +73,13 @@ class RegistrationClass extends React.Component { {isOperator ? <> {registrationStatus === RegistrationStatus.Unregistered ? : null } {registrationStatus === RegistrationStatus.Registered ? : null } @@ -87,7 +89,7 @@ class RegistrationClass extends React.Component { className="status--button status--button--focus" onClick={this.handleRefund} > - {active ? <>Refunding : "Refund"} + {active ? <>Refunding : "Refund"} : null } @@ -112,10 +114,10 @@ class RegistrationClass extends React.Component { private readonly onDone = async () => { const { darknodeID } = this.props; - const { web3, tokenPrices, ethNetwork } = this.props.store; + const { web3, tokenPrices, renNetwork } = this.props.store; try { - await this.props.actions.updateDarknodeStatistics(web3, ethNetwork, darknodeID, tokenPrices); + await this.props.actions.updateDarknodeDetails(web3, renNetwork, darknodeID, tokenPrices); } catch (error) { // Ignore error } @@ -127,14 +129,14 @@ class RegistrationClass extends React.Component { } private readonly onDoneRegister = async () => { - const { web3, address, tokenPrices, darknodeList, ethNetwork } = this.props.store; + const { web3, address, tokenPrices, darknodeList, renNetwork } = this.props.store; if (!address) { return; // FIXME } try { - await this.props.actions.updateOperatorStatistics(web3, ethNetwork, address, tokenPrices, darknodeList); + await this.props.actions.updateOperatorDarknodes(web3, renNetwork, address, tokenPrices, darknodeList); } catch (error) { // Ignore error } @@ -146,29 +148,26 @@ class RegistrationClass extends React.Component { private readonly handleRegister = async (): Promise => { const { darknodeID, publicKey } = this.props; - const { web3, address, minimumBond, tokenPrices, ethNetwork } = this.props.store; + const { web3, address, tokenPrices, renNetwork } = this.props.store; - if (!publicKey || !address || !minimumBond || !tokenPrices) { + if (!publicKey || !address || !tokenPrices) { return; // FIXME } this.setState({ active: true }); try { await this.props.actions.showRegisterPopup( - web3, ethNetwork, address, darknodeID, publicKey, minimumBond, tokenPrices, this.onCancel, this.onDoneRegister + web3, renNetwork, address, darknodeID, publicKey, tokenPrices, this.onCancel, this.onDoneRegister ); } catch (error) { - _captureInteractionException_(error, { - description: "Error thrown from showRegisterPopup", - shownToUser: "No", - }); + _catchInteractionException_(error, "Error in Registration > handleRegister > showRegisterPopup"); this.onCancel(); } } private readonly handleDeregister = async (): Promise => { const { darknodeID, darknodeDetails } = this.props; - const { web3, address, quoteCurrency, ethNetwork } = this.props.store; + const { web3, address, quoteCurrency, renNetwork } = this.props.store; if (!address) { return; @@ -177,7 +176,7 @@ class RegistrationClass extends React.Component { this.setState({ active: true }); await this.props.actions.showDeregisterPopup( web3, - ethNetwork, + renNetwork, address, darknodeID, darknodeDetails && darknodeDetails.feesEarnedTotalEth, @@ -188,36 +187,35 @@ class RegistrationClass extends React.Component { private readonly handleRefund = async (): Promise => { const { darknodeID } = this.props; - const { web3, address, ethNetwork } = this.props.store; + const { web3, address, renNetwork } = this.props.store; if (!address) { return; } this.setState({ active: true }); - await this.props.actions.showRefundPopup(web3, ethNetwork, address, darknodeID, this.onCancel, this.onDone); + await this.props.actions.showRefundPopup(web3, renNetwork, address, darknodeID, this.onCancel, this.onDone); } } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - address: state.trader.address, - web3: state.trader.web3, - minimumBond: state.statistics.minimumBond, - tokenPrices: state.statistics.tokenPrices, - darknodeList: state.trader.address ? state.statistics.darknodeList.get(state.trader.address, null) : null, - quoteCurrency: state.statistics.quoteCurrency, - ethNetwork: state.trader.ethNetwork, + address: state.account.address, + web3: state.account.web3, + tokenPrices: state.network.tokenPrices, + darknodeList: state.account.address ? state.network.darknodeList.get(state.account.address, null) : null, + quoteCurrency: state.network.quoteCurrency, + renNetwork: state.account.renNetwork, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ showRegisterPopup, showDeregisterPopup, showRefundPopup, - updateDarknodeStatistics, - updateOperatorStatistics, + updateDarknodeDetails, + updateOperatorDarknodes, }, dispatch), }); @@ -225,7 +223,7 @@ interface Props extends ReturnType, ConnectedReturnType< isOperator: boolean; registrationStatus: RegistrationStatus; darknodeID: string; - darknodeDetails: DarknodeDetails | null; + darknodeDetails: DarknodesState | null; publicKey?: string; } diff --git a/src/components/statuspage/StatusPage.tsx b/src/components/darknodePage/statuspage/StatusPage.tsx similarity index 82% rename from src/components/statuspage/StatusPage.tsx rename to src/components/darknodePage/statuspage/StatusPage.tsx index 2fc73755..c6cb8837 100644 --- a/src/components/statuspage/StatusPage.tsx +++ b/src/components/darknodePage/statuspage/StatusPage.tsx @@ -1,18 +1,20 @@ import * as React from "react"; -import { Blocky } from "@renex/react-components"; +import { Blocky, InfoLabel } from "@renproject/react-components"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; - -import { RegistrationStatus, setDarknodeName } from "../../store/actions/statistics/operatorActions"; -import { ApplicationData, DarknodeDetails } from "../../store/types"; -import { DarknodeID } from "../DarknodeID"; -import { InfoLabel } from "../InfoLabel"; -import { DarknodeAction } from "../pages/Darknode"; +import { bindActionCreators } from "redux"; + +import { NULL, RegistrationStatus } from "../../../lib/ethereum/contractReads"; +import { ApplicationState, DarknodesState } from "../../../store/applicationState"; +import { setDarknodeName } from "../../../store/network/operatorActions"; +import { AppDispatch } from "../../../store/rootReducer"; +import { DarknodeID } from "../../common/DarknodeID"; +import { DarknodeAction } from "../Darknode"; import { FeesBlock } from "./block/FeesBlock"; import { GasBlock } from "./block/GasBlock"; import { GasGraph } from "./block/GasGraph"; import { NetworkBlock } from "./block/NetworkBlock"; +import { ResourcesBlock } from "./block/ResourcesBlock"; import { Notifications } from "./Notifications"; import { Registration } from "./Registration"; @@ -36,7 +38,7 @@ class StatusPageClass extends React.Component { } public render = (): JSX.Element => { - const { darknodeDetails, darknodeID, name, isOperator, action, publicKey } = this.props; + const { darknodeDetails, darknodeID, name, isOperator, action, publicKey, store: { renNetwork } } = this.props; const { renaming, newName } = this.state; let noDarknode; @@ -44,21 +46,21 @@ class StatusPageClass extends React.Component { darknodeDetails && action !== DarknodeAction.Register && darknodeDetails.registrationStatus === RegistrationStatus.Unregistered && - darknodeDetails.operator === "0x0000000000000000000000000000000000000000" + darknodeDetails.operator === NULL ) { noDarknode = true; } const focusedClass = action !== DarknodeAction.View ? "statuspage--focused" : ""; const renamingCLass = renaming ? "statuspage--renaming" : ""; - const noDarknodeClass = noDarknode ? "statuspage--no-darknode" : ""; + const noDarknodeClass = noDarknode || !darknodeDetails ? "statuspage--no-darknode" : ""; - const notifications = ; + const notifications = ; return (
    - +
    {renaming ? @@ -90,7 +92,7 @@ class StatusPageClass extends React.Component { {action === DarknodeAction.Register ? {
    - -
    +
    + +
    +
    +
    @@ -165,13 +170,14 @@ class StatusPageClass extends React.Component { } } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - tokenPrices: state.statistics.tokenPrices, + tokenPrices: state.network.tokenPrices, + renNetwork: state.account.renNetwork, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ setDarknodeName, }, dispatch), @@ -182,7 +188,7 @@ interface Props extends ReturnType, ConnectedReturnType< isOperator: boolean; darknodeID: string; - darknodeDetails: DarknodeDetails | null; + darknodeDetails: DarknodesState | null; name: string | undefined; publicKey: string | undefined; } diff --git a/src/components/darknodePage/statuspage/block/Block.tsx b/src/components/darknodePage/statuspage/block/Block.tsx new file mode 100644 index 00000000..1eaecfbe --- /dev/null +++ b/src/components/darknodePage/statuspage/block/Block.tsx @@ -0,0 +1,19 @@ +import * as React from "react"; + +import { className } from "../../../../lib/react/className"; + +// tslint:disable: react-unused-props-and-state +interface Props { + children: React.ReactNode; + className?: string; + onClick?: ((event: React.MouseEvent) => void); +} + +export const Block = (props: Props) => +
    {props.children}
    ; + +export const BlockBody = (props: Props) => +
    {props.children}
    ; + +export const BlockTitle = (props: Props) => +
    {props.children}
    ; diff --git a/src/components/statuspage/block/FeesBlock.tsx b/src/components/darknodePage/statuspage/block/FeesBlock.tsx similarity index 61% rename from src/components/statuspage/block/FeesBlock.tsx rename to src/components/darknodePage/statuspage/block/FeesBlock.tsx index a065f84d..0110db15 100644 --- a/src/components/statuspage/block/FeesBlock.tsx +++ b/src/components/darknodePage/statuspage/block/FeesBlock.tsx @@ -1,22 +1,23 @@ import * as React from "react"; -import BigNumber from "bignumber.js"; - import { faStar } from "@fortawesome/free-regular-svg-icons"; -import { faChevronRight, faTimes } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Loading, TokenIcon } from "@renex/react-components"; +import { CurrencyIcon, TokenIcon } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; import { OrderedMap } from "immutable"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; - -import { alreadyPast, naturalTime } from "../../../lib/conversion"; -import { OldToken, Token } from "../../../lib/ethereum/tokens"; -import { RegistrationStatus, updateCycleAndPendingRewards, updateDarknodeStatistics } from "../../../store/actions/statistics/operatorActions"; -import { showClaimPopup } from "../../../store/actions/statistics/operatorPopupActions"; -import { ApplicationData, DarknodeDetails, DarknodeFeeStatus } from "../../../store/types"; -import { CurrencyIcon } from "../../CurrencyIcon"; -import { TokenBalance } from "../../TokenBalance"; +import { bindActionCreators } from "redux"; + +import { DarknodeFeeStatus } from "../../../../lib/ethereum/contractReads"; +import { OldToken, Token } from "../../../../lib/ethereum/tokens"; +// import { showClaimPopup } from "../../../../store/account/operatorPopupActions"; +import { ApplicationState, DarknodesState } from "../../../../store/applicationState"; +import { + updateCycleAndPendingRewards, updateDarknodeDetails, +} from "../../../../store/network/operatorActions"; +import { AppDispatch } from "../../../../store/rootReducer"; +import { Tabs } from "../../../common/Tabs"; +import { TokenBalance } from "../../../common/TokenBalance"; import { FeesItem } from "../FeesItem"; import { OldFees } from "../OldFees"; import { Block, BlockBody, BlockTitle } from "./Block"; @@ -36,7 +37,6 @@ const mergeFees = (left: OrderedMap, right: Ordered }; const defaultState = { // Entries must be immutable - showAdvanced: false, tab: Tab.Withdrawable, claiming: false, disableClaim: false, @@ -62,7 +62,6 @@ class FeesBlockClass extends React.Component { // If the darknode's cycles have been updated if (this.state.disableClaim && nextProps.darknodeDetails && this.props.darknodeDetails && nextProps.darknodeDetails.cycleStatus.keySeq().first() !== this.props.darknodeDetails.cycleStatus.keySeq().first()) { - // console.log(`Status for ${nextProps.store.previousCycle}: ${nextProps.darknodeDetails.cycleStatus.get(nextProps.store.previousCycle)}`); this.setState({ disableClaim: false }); } } @@ -75,11 +74,12 @@ class FeesBlockClass extends React.Component { previousCycle, pendingRewards, pendingTotalInEth, - cycleTimeout, + // cycleTimeout, } = store; - const { showAdvanced, tab, disableClaim, claiming } = this.state; + // const { tab, disableClaim, claiming } = this.state; + const { tab } = this.state; - const showWhitelist = darknodeDetails && darknodeDetails.cycleStatus.get(currentCycle) === DarknodeFeeStatus.NOT_WHITELISTED; + // const showWhitelist = darknodeDetails && darknodeDetails.cycleStatus.get(currentCycle) === DarknodeFeeStatus.NOT_WHITELISTED; const showPreviousPending = darknodeDetails && darknodeDetails.cycleStatus.get(previousCycle) === DarknodeFeeStatus.NOT_CLAIMED; const showCurrentPending = darknodeDetails && darknodeDetails.cycleStatus.get(currentCycle) === DarknodeFeeStatus.NOT_CLAIMED; let pendingTotal = new BigNumber(0); @@ -113,14 +113,8 @@ class FeesBlockClass extends React.Component { return ( - - {showAdvanced ?
    - -
    : null} -

    @@ -129,45 +123,15 @@ class FeesBlockClass extends React.Component { {darknodeDetails ? - {!showAdvanced ? -
    -
    - - - - - - - {quoteCurrency.toUpperCase()} -
    -
    - - - - - - - {quoteCurrency.toUpperCase()} -
    -
    - -
    -
    : + , + Pending: <>, + Total: <>, + }} + onTab={this.setTab} + >
    -
    - - - -
    -
    @@ -185,9 +149,9 @@ class FeesBlockClass extends React.Component { {quoteCurrency.toUpperCase()}
    - {isOperator && darknodeDetails.registrationStatus === RegistrationStatus.Registered ? - cycleTimeout.isZero() || claiming || disableClaim ? : (showPreviousPending || showWhitelist) ? : alreadyPast(cycleTimeout.toNumber() + 5) ? : - : <> - } -
    + } */} +
    { fees.map((balance: BigNumber, token: Token | OldToken) => { return - {isOperator ?
    + {" "} {token} @@ -246,7 +210,7 @@ class FeesBlockClass extends React.Component { {
    - } - + : null} ); } - private readonly handleInput = (event: React.FormEvent): void => { - const element = (event.target as HTMLInputElement); - this.setState((current: State) => ({ ...current, [element.name]: element.value })); - } - - private readonly toggleAdvanced = (): void => { - this.setState({ showAdvanced: !this.state.showAdvanced }); - } - - private readonly onClaimAfterCycle = async () => { - await this.onClaim(false); - } - - private readonly onClaimBeforeCycle = async () => { - await this.onClaim(true); - } - - private readonly onClaim = async (claimBeforeCycle: boolean) => { - const { darknodeDetails, store: { web3, address, tokenPrices, ethNetwork } } = this.props; - - if (!address || !darknodeDetails) { - this.setState({ claiming: false }); - return; - } - - const darknodeID = darknodeDetails.ID; - - const onCancel = () => { - if (this._isMounted) { - this.setState({ claiming: false, disableClaim: false }); - } - }; - - const onDone = async () => { - try { - await this.props.actions.updateCycleAndPendingRewards(web3, ethNetwork, tokenPrices); - await this.props.actions.updateDarknodeStatistics(web3, ethNetwork, darknodeID, tokenPrices); - } catch (error) { - // Ignore error - } - - if (this._isMounted) { - this.setState({ claiming: false }); - } - }; - - const title = `Claim rewards`; - this.setState({ disableClaim: true }); - await this.props.actions.showClaimPopup(web3, ethNetwork, claimBeforeCycle, address, darknodeID, title, onCancel, onDone); + private readonly setTab = (tab: string): void => { + this.setState({ tab: tab as Tab }); } + // private readonly onClaimAfterCycle = async () => { + // await this.onClaim(false); + // } + + // private readonly onClaimBeforeCycle = async () => { + // await this.onClaim(true); + // } + + // private readonly onClaim = async (claimBeforeCycle: boolean) => { + // const { darknodeDetails, store: { web3, address, tokenPrices, renNetwork } } = this.props; + + // if (!address || !darknodeDetails) { + // this.setState({ claiming: false }); + // return; + // } + + // const darknodeID = darknodeDetails.ID; + + // const onCancel = () => { + // if (this._isMounted) { + // this.setState({ claiming: false, disableClaim: false }); + // } + // }; + + // const onDone = async () => { + // try { + // await this.props.actions.updateCycleAndPendingRewards(web3, renNetwork, tokenPrices); + // await this.props.actions.updateDarknodeDetails(web3, renNetwork, darknodeID, tokenPrices); + // } catch (error) { + // // Ignore error + // } + + // if (this._isMounted) { + // this.setState({ claiming: false }); + // } + // }; + + // const title = `Claim rewards`; + // this.setState({ disableClaim: true }); + // await this.props.actions.showClaimPopup(web3, renNetwork, claimBeforeCycle, address, darknodeID, title, onCancel, onDone); + // } } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - address: state.trader.address, - web3: state.trader.web3, - quoteCurrency: state.statistics.quoteCurrency, - currentCycle: state.statistics.currentCycle, - previousCycle: state.statistics.previousCycle, - pendingRewards: state.statistics.pendingRewards, - pendingTotalInEth: state.statistics.pendingTotalInEth, - tokenPrices: state.statistics.tokenPrices, - ethNetwork: state.trader.ethNetwork, - cycleTimeout: state.statistics.cycleTimeout, + address: state.account.address, + web3: state.account.web3, + quoteCurrency: state.network.quoteCurrency, + currentCycle: state.network.currentCycle, + previousCycle: state.network.previousCycle, + pendingRewards: state.network.pendingRewards, + pendingTotalInEth: state.network.pendingTotalInEth, + tokenPrices: state.network.tokenPrices, + renNetwork: state.account.renNetwork, + cycleTimeout: state.network.cycleTimeout, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ - showClaimPopup, - updateDarknodeStatistics, + // showClaimPopup, + updateDarknodeDetails, updateCycleAndPendingRewards, }, dispatch), }); interface Props extends ReturnType, ConnectedReturnType { isOperator: boolean; - darknodeDetails: DarknodeDetails | null; + darknodeDetails: DarknodesState | null; } type State = typeof defaultState; diff --git a/src/components/darknodePage/statuspage/block/GasBlock.tsx b/src/components/darknodePage/statuspage/block/GasBlock.tsx new file mode 100644 index 00000000..0d261474 --- /dev/null +++ b/src/components/darknodePage/statuspage/block/GasBlock.tsx @@ -0,0 +1,67 @@ +import * as React from "react"; + +import { faFire } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import BigNumber from "bignumber.js"; + +import { DarknodesState } from "../../../../store/applicationState"; +import { TopUpController } from "../topup/TopUpController"; +import { Block, BlockTitle } from "./Block"; + +const defaultState = { // Entries must be immutable + // showAdvanced: false, +}; + +export class GasBlock extends React.Component { + + public constructor(props: Props, context: object) { + super(props, context); + this.state = defaultState; + } + + public render = (): JSX.Element => { + const { darknodeDetails } = this.props; + // const { showAdvanced } = this.state; + + const gasValue = darknodeDetails ? + (darknodeDetails.ethBalance.div(new BigNumber(Math.pow(10, 18)))).toFixed(3) : + ""; + + return ( + + + +

    + + Gas Balance +

    +
    + + {darknodeDetails ? +
    +
    + {gasValue} + ETH +
    +
    + +
    +
    + : null} +
    + ); + } + + // private readonly toggleAdvanced = (): void => { + // this.setState({ showAdvanced: !this.state.showAdvanced }); + // } + +} + +interface Props { + darknodeDetails: DarknodesState | null; +} diff --git a/src/components/statuspage/block/GasGraph.tsx b/src/components/darknodePage/statuspage/block/GasGraph.tsx similarity index 82% rename from src/components/statuspage/block/GasGraph.tsx rename to src/components/darknodePage/statuspage/block/GasGraph.tsx index 2bf8cd23..e6f87f29 100644 --- a/src/components/statuspage/block/GasGraph.tsx +++ b/src/components/darknodePage/statuspage/block/GasGraph.tsx @@ -1,23 +1,21 @@ import * as React from "react"; -import BigNumber from "bignumber.js"; - import { faFire } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Loading } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; import { OrderedMap } from "immutable"; import { Scatter } from "react-chartjs-2"; import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; +import { bindActionCreators } from "redux"; -import { _captureBackgroundException_ } from "../../../lib/errors"; +import { HistoryIterations, HistoryPeriod } from "../../../../lib/ethereum/contractReads"; +import { _catchBackgroundException_ } from "../../../../lib/react/errors"; +import { ApplicationState, DarknodesState } from "../../../../store/applicationState"; import { - calculateSecondsPerBlock, - fetchDarknodeBalanceHistory, - HistoryIterations, - HistoryPeriods, -} from "../../../store/actions/statistics/operatorActions"; -import { ApplicationData, DarknodeDetails } from "../../../store/types"; -import { Loading } from "../../Loading"; + updateDarknodeBalanceHistory, updateSecondsPerBlock, +} from "../../../../store/network/operatorActions"; +import { AppDispatch } from "../../../../store/rootReducer"; import { Block, BlockBody, BlockTitle } from "./Block"; const shift = new BigNumber(10).exponentiatedBy(18); @@ -52,17 +50,17 @@ const options = { } }; -const periods: Array<[HistoryPeriods, string]> = [ - [HistoryPeriods.Day, "1D"], - [HistoryPeriods.Week, "1W"], - [HistoryPeriods.Month, "1M"], - [HistoryPeriods.HalfYear, "6M"], - [HistoryPeriods.Year, "1Y"], +const periods: Array<[HistoryPeriod, string]> = [ + [HistoryPeriod.Day, "1D"], + [HistoryPeriod.Week, "1W"], + [HistoryPeriod.Month, "1M"], + [HistoryPeriod.HalfYear, "6M"], + [HistoryPeriod.Year, "1Y"], ]; const defaultState = { // Entries must be immutable - historyPeriod: HistoryPeriods.Week, - nextHistoryPeriod: HistoryPeriods.Week, + historyPeriod: HistoryPeriod.Week, + nextHistoryPeriod: HistoryPeriod.Week, loadingHistory: false, }; @@ -85,11 +83,9 @@ class GasGraphClass extends React.Component { this._isMounted = true; const { store: { secondsPerBlock, web3 } } = this.props; if (secondsPerBlock === null) { - this.props.actions.calculateSecondsPerBlock(web3) + this.props.actions.updateSecondsPerBlock(web3) .catch((error) => { - _captureBackgroundException_(error, { - description: "Error in componentDidMount in GasGraph", - }); + _catchBackgroundException_(error, "Error in GasGraph > updateSecondsPerBlock"); }); } @@ -105,9 +101,7 @@ class GasGraphClass extends React.Component { if (changedBalance || (this.updateHistoryStarted === false && nextProps.darknodeDetails)) { this.updateHistory(nextProps).catch((error => { - _captureBackgroundException_(error, { - description: "Error in componentWillReceiveProps in GasGraph", - }); + _catchBackgroundException_(error, "Error in GasGraph > componentWillReceiveProps"); })); } } @@ -120,7 +114,7 @@ class GasGraphClass extends React.Component { public updateHistory = async ( props: Props | undefined, - historyPeriod?: HistoryPeriods | undefined + historyPeriod?: HistoryPeriod | undefined ): Promise => { this.updateHistoryStarted = true; @@ -150,9 +144,7 @@ class GasGraphClass extends React.Component { secondsPerBlock ); } catch (error) { - _captureBackgroundException_(error, { - description: "Error in updateHistory in GasGraph", - }); + _catchBackgroundException_(error, "Error in GasGraph > updateHistory > fetchDarknodeBalanceHistory"); } } @@ -236,10 +228,6 @@ class GasGraphClass extends React.Component { return ( - {/* {showAdvanced ?
    - -
    : null} */} -

    @@ -250,7 +238,7 @@ class GasGraphClass extends React.Component { {chartData ? :
    }
    - {periods.map(([period, periodString]: [HistoryPeriods, string]) => { + {periods.map(([period, periodString]: [HistoryPeriod, string]) => { return ; })}
    @@ -282,30 +270,28 @@ class GasGraphClass extends React.Component { this.setState((current: State) => ({ ...current, historyPeriod })); } } catch (error) { - _captureBackgroundException_(error, { - description: "Error in handleSelectTime in GasGraph", - }); + _catchBackgroundException_(error, "Error in GasGraph > handleSelectTime"); } } } -const mapStateToProps = (state: ApplicationData) => ({ +const mapStateToProps = (state: ApplicationState) => ({ store: { - web3: state.trader.web3, - balanceHistories: state.statistics.balanceHistories, - secondsPerBlock: state.statistics.secondsPerBlock, + web3: state.account.web3, + balanceHistories: state.network.balanceHistories, + secondsPerBlock: state.network.secondsPerBlock, }, }); -const mapDispatchToProps = (dispatch: Dispatch) => ({ +const mapDispatchToProps = (dispatch: AppDispatch) => ({ actions: bindActionCreators({ - fetchDarknodeBalanceHistory, - calculateSecondsPerBlock, + fetchDarknodeBalanceHistory: updateDarknodeBalanceHistory, + updateSecondsPerBlock, }, dispatch), }); interface Props extends ReturnType, ConnectedReturnType { - darknodeDetails: DarknodeDetails | null; + darknodeDetails: DarknodesState | null; } type State = typeof defaultState; diff --git a/src/components/darknodePage/statuspage/block/NetworkBlock.tsx b/src/components/darknodePage/statuspage/block/NetworkBlock.tsx new file mode 100644 index 00000000..fa759128 --- /dev/null +++ b/src/components/darknodePage/statuspage/block/NetworkBlock.tsx @@ -0,0 +1,58 @@ +import * as React from "react"; + +import { faServer } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { naturalTime } from "@renproject/react-components"; + +import { darknodeIDHexToBase58 } from "../../../../lib/darknode/darknodeID"; +import { DarknodesState } from "../../../../store/applicationState"; +import { Block, BlockBody, BlockTitle } from "./Block"; + +export const NetworkBlock = (props: Props): JSX.Element => { + const { darknodeDetails } = props; + + const darknodeIDBase58 = darknodeDetails ? darknodeIDHexToBase58(darknodeDetails.ID) : ""; + + return ( + + + +

    + + Network Information +

    +
    + + {darknodeDetails ? +
    + + + + + + + + + + + + +
    ID{darknodeIDBase58}
    Address{darknodeDetails.ID}
    Public Key{darknodeDetails.publicKey}
    Operator{darknodeDetails.operator}
    Version{darknodeDetails.nodeStatistics ? darknodeDetails.nodeStatistics.version : ""}
    MultiAddress{darknodeDetails.nodeStatistics ? darknodeDetails.nodeStatistics.multiAddress : ""}
    System Uptime{darknodeDetails.nodeStatistics ? naturalTime(Date.now() / 1000 - darknodeDetails.nodeStatistics.systemUptime, { + message: "Just now", + countDown: false, + showingSeconds: false + }) : ""}
    Service Uptime{darknodeDetails.nodeStatistics ? naturalTime(Date.now() / 1000 - darknodeDetails.nodeStatistics.serviceUptime, { + message: "Just now", + countDown: false, + showingSeconds: false + }) : ""}
    CPU Cores{darknodeDetails.nodeStatistics ? darknodeDetails.nodeStatistics.cores : ""}
    +
    +
    : null} +
    + ); +}; + +// tslint:disable: react-unused-props-and-state +interface Props { + darknodeDetails: DarknodesState | null; +} diff --git a/src/components/darknodePage/statuspage/block/ResourcesBlock.tsx b/src/components/darknodePage/statuspage/block/ResourcesBlock.tsx new file mode 100644 index 00000000..67b1d8fe --- /dev/null +++ b/src/components/darknodePage/statuspage/block/ResourcesBlock.tsx @@ -0,0 +1,103 @@ +import * as React from "react"; + +import { faServer } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import filesize from "filesize"; +import { Doughnut } from "react-chartjs-2"; + +import { DarknodesState } from "../../../../store/applicationState"; +import { Block, BlockBody, BlockTitle } from "./Block"; + +export const ResourcesBlock = (props: Props): JSX.Element => { + const { darknodeDetails } = props; + + return ( + + + +

    + + Resource Usage +

    +
    + + {darknodeDetails ? +
    +
    +
    + +
    +

    Memory Usage

    +
    +
    +
    + +
    +

    Disk Usage

    +
    +
    +
    : null} +
    + ); +}; + +// tslint:disable: react-unused-props-and-state +interface Props { + darknodeDetails: DarknodesState | null; +} diff --git a/src/components/darknodePage/statuspage/topup/TopUp.tsx b/src/components/darknodePage/statuspage/topup/TopUp.tsx new file mode 100644 index 00000000..7ba8c288 --- /dev/null +++ b/src/components/darknodePage/statuspage/topup/TopUp.tsx @@ -0,0 +1,63 @@ +import * as React from "react"; + +import { Tabs } from "../../../common/Tabs"; +import { BlockBody } from "../block/Block"; +import { CONFIRMATION_MESSAGE } from "./TopUpController"; + +interface Props { + darknodeID: string; + value: string; + resultMessage: React.ReactNode; + pending: boolean; + disabled: boolean; + handleChange: (value: string) => void; + handleBlur: () => void; + sendFunds: () => void; +} + +export const TopUp = (props: Props) => { + const { value, resultMessage, pending, disabled, handleChange, handleBlur, sendFunds } = props; + + const handleChangeEvent = React.useCallback((event: React.ChangeEvent) => { + handleChange(event.target.value); + }, [handleChange]); + + return
    + + + , + Withdraw: , + }} + /> +
    ; +}; diff --git a/src/components/darknodePage/statuspage/topup/TopUpController.tsx b/src/components/darknodePage/statuspage/topup/TopUpController.tsx new file mode 100644 index 00000000..3e99ad5e --- /dev/null +++ b/src/components/darknodePage/statuspage/topup/TopUpController.tsx @@ -0,0 +1,159 @@ +import { Currency, CurrencyIcon } from "@renproject/react-components"; +import { BigNumber } from "bignumber.js"; +import React, { Component } from "react"; +import { connect, ConnectedReturnType } from "react-redux"; // Custom typings +import { bindActionCreators } from "redux"; + +import { Token } from "../../../../lib/ethereum/tokens"; +import { _catchBackgroundException_ } from "../../../../lib/react/errors"; +import { showFundPopup } from "../../../../store/account/operatorPopupActions"; +import { ApplicationState } from "../../../../store/applicationState"; +import { updateDarknodeDetails } from "../../../../store/network/operatorActions"; +import { AppDispatch } from "../../../../store/rootReducer"; +import { TokenBalance } from "../../../common/TokenBalance"; +import { TopUp } from "./TopUp"; + +export const CONFIRMATION_MESSAGE = "Transaction confirmed."; + +const defaultState = { // Entries must be immutable + value: "", + resultMessage: null as React.ReactNode, + pending: false, + disabled: false, + accountBalance: new BigNumber(0), +}; + +class TopUpControllerClass extends Component { + private _isMounted = false; + + constructor(props: Props) { + super(props); + this.state = defaultState; + } + + public componentDidMount = async () => { + this._isMounted = true; + this.updateTraderBalance().catch((error) => { + _catchBackgroundException_(error, "Error in TopUpController > updateTraderBalance"); + }); + } + + public componentWillUnmount = () => { + this._isMounted = false; + } + + public render = (): JSX.Element => + + private readonly handleChange = (value: string): void => { + this.setState({ value }); + + const { accountBalance: traderBalance, resultMessage, disabled } = this.state; + // If input is invalid, show an error. + if (isNaN(parseFloat(value)) || parseFloat(value) <= 0) { + this.setState({ disabled: true, resultMessage: null }); + } else if (traderBalance.isLessThan(value)) { + this.setState({ + resultMessage: <>Insufficient balance. Maximum deposit: , + disabled: true, + }); + } else if (resultMessage || disabled) { + this.setState({ resultMessage: null, disabled: false }); + } + } + + private readonly updateTraderBalance = async (): Promise => { + const { store: { address, web3 } } = this.props; + + let traderBalance; + if (!address) { + traderBalance = new BigNumber(-1); + } else { + traderBalance = new BigNumber((await web3.eth.getBalance(address)).toString()) + .div(new BigNumber(10).exponentiatedBy(18)); + } + this.setState({ accountBalance: traderBalance }); + return traderBalance; + } + + private readonly handleBlur = async (): Promise => { + const { value } = this.state; + let traderBalance; + try { + traderBalance = await this.updateTraderBalance(); + if (traderBalance.isLessThan(value)) { + this.setState({ value: traderBalance.toFixed(), disabled: true }); + } + } catch (error) { + _catchBackgroundException_(error, "Error in TopUpController > handleBlur"); + } + } + + private readonly sendFunds = async (): Promise => { + const { darknodeID, store: { address, web3, tokenPrices, renNetwork } } = this.props; + const { value } = this.state; + + this.setState({ resultMessage: "", pending: true }); + + if (!address) { + this.setState({ resultMessage: `Invalid account.`, pending: false }); + return; + } + + const onCancel = () => { + if (this._isMounted) { + this.setState({ pending: false }); + } + }; + + const onDone = async () => { + try { + await this.props.actions.updateDarknodeDetails(web3, renNetwork, darknodeID, tokenPrices); + } catch (error) { + // Ignore error + } + + if (this._isMounted) { + this.setState({ resultMessage: CONFIRMATION_MESSAGE, pending: false }); + + // If the user hasn't changed the value, set it to 0. + if (this.state.value === value) { + this.setState({ value: "0" }); + } + } + }; + + // tslint:disable-next-line: await-promise + await this.props.actions.showFundPopup(web3, address, darknodeID, value, onCancel, onDone); + } +} + +const mapStateToProps = (state: ApplicationState) => ({ + store: { + address: state.account.address, + web3: state.account.web3, + tokenPrices: state.network.tokenPrices, + renNetwork: state.account.renNetwork, + }, +}); + +const mapDispatchToProps = (dispatch: AppDispatch) => ({ + actions: bindActionCreators({ + showFundPopup, + updateDarknodeDetails, + }, dispatch), +}); + +interface Props extends ReturnType, ConnectedReturnType { + darknodeID: string; +} + +export const TopUpController = connect(mapStateToProps, mapDispatchToProps)(TopUpControllerClass); diff --git a/src/components/overviewPage/Overview.tsx b/src/components/overviewPage/Overview.tsx new file mode 100644 index 00000000..1d255699 --- /dev/null +++ b/src/components/overviewPage/Overview.tsx @@ -0,0 +1,87 @@ +import { CurrencyIcon, Loading } from "@renproject/react-components"; +import React from "react"; +import { connect } from "react-redux"; + +import { Token } from "../../lib/ethereum/tokens"; +import { ApplicationState } from "../../store/applicationState"; +import { Change } from "../common/Change"; +import { Stat, Stats } from "../common/Stat"; +import { TokenBalance } from "../common/TokenBalance"; +import { DarknodeMap } from "./darknodeMap/DarknodeMap"; +import { MapContainer } from "./mapContainer"; +import { RewardChart } from "./RewardChart"; + +const mapStateToProps = (state: ApplicationState) => ({ + currentCycle: state.network.currentCycle, + previousCycle: state.network.previousCycle, + pendingTotalInEth: state.network.pendingTotalInEth, + quoteCurrency: state.network.quoteCurrency, + currentShareCount: state.network.currentShareCount, + currentDarknodeCount: state.network.currentDarknodeCount, + previousDarknodeCount: state.network.previousDarknodeCount, + nextDarknodeCount: state.network.nextDarknodeCount, +}); + +export const Overview = connect(mapStateToProps)(({ + currentCycle, previousCycle, pendingTotalInEth, quoteCurrency, + currentShareCount, currentDarknodeCount, previousDarknodeCount, + nextDarknodeCount, +}: ReturnType) => { + const container = MapContainer.useContainer(); + const current = pendingTotalInEth.get(currentCycle, undefined); + const previous = pendingTotalInEth.get(previousCycle, undefined); + const currentSummed = current ? current.times(currentShareCount) : undefined; + const previousSummed = previous ? previous.times(currentShareCount) : undefined; + + return ( +
    + + + + {currentDarknodeCount === null ? : <> + {currentDarknodeCount} + {previousDarknodeCount !== null ? : <>} + } + + {container.darknodeCount === null ? : <> + {container.darknodeCount} + + } + + {nextDarknodeCount === null || currentDarknodeCount === null ? : <> + + } + {currentDarknodeCount === null ? : <> + {100 * currentDarknodeCount / 100000}% + } + + + + + {/* $? */} + + {previousSummed ? <> : } + + + {currentSummed ? <> + + : } + + + + +
    + + +
    +
    + ); +}); diff --git a/src/components/overviewPage/RewardChart.tsx b/src/components/overviewPage/RewardChart.tsx new file mode 100644 index 00000000..a05d5f9f --- /dev/null +++ b/src/components/overviewPage/RewardChart.tsx @@ -0,0 +1,98 @@ +import { CurrencyIcon, Loading, TokenIcon } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; +import React from "react"; +import { Doughnut } from "react-chartjs-2"; +import { connect } from "react-redux"; + +import { Token } from "../../lib/ethereum/tokens"; +import { ApplicationState } from "../../store/applicationState"; +import { TokenBalance } from "../common/TokenBalance"; + +const mapStateToProps = (state: ApplicationState) => ({ + previousCycle: state.network.previousCycle, + currentCycle: state.network.currentCycle, + quoteCurrency: state.network.quoteCurrency, + pendingRewardsInEth: state.network.pendingRewardsInEth, + currentShareCount: state.network.currentShareCount, +}); + +const colors = [ + // Token colours + // "#d9a547", + // "#F09242", + // "#f4b728", + // "#627eea", + // Old colours + "#B8DCFF", + "#02BBFF", + "#006FE8", + "#1CDED2", + "91FFFE", +]; + +enum Tab { + Current = "current", + Previous = "previous", +} + +export const RewardChart = connect(mapStateToProps)(({ + previousCycle, currentCycle, quoteCurrency, pendingRewardsInEth, currentShareCount, +}: ReturnType) => { + const [tab, setTab] = React.useState(Tab.Previous); + + const currentSplit = pendingRewardsInEth.get(tab === Tab.Previous ? previousCycle : currentCycle); + + const keys = React.useMemo(() => currentSplit ? currentSplit.keySeq().toArray() : [], [currentSplit]); + const values = React.useMemo(() => currentSplit ? currentSplit.valueSeq().map(bn => bn.multipliedBy(currentShareCount).decimalPlaces(6).toNumber()).toArray() : [], [currentSplit]); + const empty = React.useMemo(() => !!currentSplit && values.reduce((sum, value) => sum + value, 0) === 0, [currentSplit, values]); + + const selectCurrent = React.useCallback(() => setTab(Tab.Current), []); + const selectPrevious = React.useCallback(() => setTab(Tab.Previous), []); + + return
    +
    +
    Last cycle
    +
    Current cycle
    +
    +
    + {currentSplit ? <>
    + +
    +
    +
    + {currentSplit ? currentSplit.toArray().map(([token, value], i) => { + return
    +
    + {token} +
    +
    + + +
    +
    ; + }) : <>} +
    +
    + : } +
    +
    ; +}); diff --git a/src/components/overviewPage/_overview.scss b/src/components/overviewPage/_overview.scss new file mode 100644 index 00000000..9ee8f83f --- /dev/null +++ b/src/components/overviewPage/_overview.scss @@ -0,0 +1,128 @@ +.overview { + .overview--bottom { + display: flex; + align-items: center; + flex-wrap: wrap; + + >* { + flex-grow: 1; + } + + >canvas { + width: 200px !important; + height: 200px !important; + } + + .overview--chart--outer { + background: linear-gradient(-180deg, #00457F -1080.14%, #002148 85.91%); + border-radius: 4px; + height: 400px; + + min-width: 500px; + + flex: 1 1 0px; + + display: flex; + flex-flow: column; + align-items: center; + justify-content: space-between; + } + + .chart--tabs { + cursor: pointer; + width: 100%; + // background: #1C2127; + // box-sizing: border-box; + margin: 0px; + margin-bottom: 0; + display: flex; + + padding: 0 0px; + } + + .chart--tab { + background: none; + border: none; + font-size: 14px; + line-height: 16px; + text-align: center; + + color: #9195A0; + + >span { + opacity: 0.5; + } + + width: 50%; + transition: all 200ms; + // border: 0px solid rgba(145, 149, 160, 0.1); + border: 1px solid transparent; + padding: 10px; + border-bottom: 2px solid #001b39; + } + + + .chart--tab+.chart--tab { + border-left: 2px solid #001b39; + } + + .chart--tab--selected { + border-bottom: 2px solid transparent; + box-shadow: none; + // background: #282C35; + // border: 1px solid $blue-bright; + // box-sizing: border-box; + // box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.1); + color: #E0E3EB; + + >span { + opacity: 1; + } + } + + .overview--chart { + flex: 1 1 0px; + + display: flex; + align-items: center; + justify-content: center; + + // width: 100%; + // max-width: 40%; + + .overview--chart--legend--table { + width: 200px; + margin-left: 30px; + + font-weight: 300; + font-size: 12px; + line-height: 27px; + + letter-spacing: 1.5px; + + + >div { + >:first-child { + display: flex; + align-items: center; + font-weight: 900; + + svg { + margin-right: 5px; + } + } + + &:not(:last-child) { + border-bottom: 1px solid #ffffff20; + } + + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 0; + } + + } + } + } +} \ No newline at end of file diff --git a/src/components/overviewPage/darknodeMap/DarknodeMap.tsx b/src/components/overviewPage/darknodeMap/DarknodeMap.tsx new file mode 100644 index 00000000..349b4963 --- /dev/null +++ b/src/components/overviewPage/darknodeMap/DarknodeMap.tsx @@ -0,0 +1,88 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import { + ComposableMap, Geographies, Geography, Marker, Markers, ZoomableGroup, +} from "react-simple-maps"; + +import { MapContainer } from "../mapContainer"; +import MapJSON from "./world-50m.json"; + +export const DarknodeMap = () => { + const container = MapContainer.useContainer(); + + React.useEffect(() => { + const fetchIPs = () => { + container.fetchDarknodes().catch(console.error); + }; + + // Every two minutes + const interval = setInterval(fetchIPs, 120 * 1000); + if (container.darknodes.length === 0) { + fetchIPs(); + } + + return () => { + clearInterval(interval); + }; + // tslint:disable-next-line:react-hooks/exhaustive-dep + }, []); + + return
    + + + + {(geographies, projection) => + geographies.map((geography, i) => + // Don't render Antarctica + (geography as { id: string }).id !== "ATA" && ( + + ))} + + + {container.darknodes.map((darknode, i) => + + + + )} + + + +
    ; +}; diff --git a/src/components/overviewPage/darknodeMap/_darknodeMap.scss b/src/components/overviewPage/darknodeMap/_darknodeMap.scss new file mode 100644 index 00000000..85c89cf9 --- /dev/null +++ b/src/components/overviewPage/darknodeMap/_darknodeMap.scss @@ -0,0 +1,50 @@ +.map { + flex: 1 1 600px; + display: flex; + + .map--world { + // width: 100%; + // min-width: 500px; + // max-width: 60%; + flex: 1 1 60%; + min-width: 60%; + } + + circle { + fill: #87C0FF; + } + + .rsm-markers { + animation: glow 5s infinite; + } + + h2 { + font-style: normal; + font-weight: bold; + font-size: 14px; + line-height: 16px; + + /* identical to box height */ + letter-spacing: 1.75px; + text-transform: uppercase; + color: #FFFFFF; + } +} + +@keyframes glow { + 0% { + filter: drop-shadow(0px 0px 5px rgba(135, 192, 255, 0.9)); + } + + 10% { + filter: drop-shadow(0px 0px 7px rgba(135, 192, 255, 1.0)); + } + + 20% { + filter: drop-shadow(0px 0px 5px rgba(135, 192, 255, 0.9)); + } + + 100% { + filter: drop-shadow(0px 0px 5px rgba(135, 192, 255, 0.9)); + } +} \ No newline at end of file diff --git a/src/components/overviewPage/darknodeMap/world-50m.json b/src/components/overviewPage/darknodeMap/world-50m.json new file mode 100644 index 00000000..ca92d9d4 --- /dev/null +++ b/src/components/overviewPage/darknodeMap/world-50m.json @@ -0,0 +1 @@ +{"arcs":[[[7080,7327],[-5,4],[-10,-10],[5,-6]],[[7070,7315],[-16,-12],[-9,5],[-28,-4],[-12,-6],[-1,-5],[-17,-18],[-11,-16],[6,-10],[6,-18],[-2,-15],[3,-8],[-18,-35],[4,-12],[-2,-18],[-7,-5],[-13,0],[-13,4],[3,-16],[6,-6],[-1,-9],[4,-9],[-12,-14],[-8,0],[-6,-18],[2,-7],[-6,-11],[2,-30],[-8,-17],[-6,-1],[-2,8],[-15,4],[-3,-8],[-14,-12],[6,-9],[-11,-7],[-13,6],[-7,-15],[-8,-7],[-3,-19],[2,-9],[-4,-35],[-32,-17],[-16,2],[-11,-11],[-14,6],[-30,-5],[-46,26]],[[6689,6902],[27,56],[1,10],[-4,21],[-24,7],[-1,9],[1,35],[-7,43],[0,9],[7,14],[1,9],[-10,5],[0,31],[11,8],[-5,13],[7,6],[5,26],[-1,11],[4,19]],[[6701,7234],[8,-10],[13,-1],[6,-7],[1,-9],[5,8],[5,-4],[13,13],[0,24],[9,0],[4,6],[20,11],[9,15],[0,16],[5,14],[-1,9],[9,8],[12,0],[4,16],[4,3],[15,-14],[5,2]],[[6847,7334],[14,2],[7,-12],[6,6],[8,-6]],[[6882,7324],[7,-15],[7,10],[15,9],[2,5],[10,-14],[5,7],[-2,13],[4,8],[21,2],[-3,18],[5,4],[12,26],[9,-2],[7,-9],[-1,-21],[6,3],[2,-8],[-3,-14],[-1,-35],[3,-12],[7,-4],[15,19],[9,1],[3,11],[14,14],[13,-2],[-1,-12],[14,8],[12,2],[7,-9]],[[5665,4557],[3,-32],[-3,-9],[0,-36],[2,-12],[-5,-22],[4,-12],[-56,0],[0,-182],[3,-21],[6,-7],[15,-33],[6,-7],[3,-10],[6,-7]],[[5649,4167],[-53,-21],[-11,4],[-8,-4],[-13,9],[-8,-3],[-17,2],[-5,4],[-10,0],[-7,9],[-5,14],[-52,0],[-66,0],[-7,-1],[-12,17],[-4,9],[-6,1],[-18,-16],[-15,4],[-6,-6]],[[5326,4189],[0,28],[2,-1],[-2,58],[7,9],[1,23],[6,24],[2,20],[0,23],[5,12],[0,26],[4,4],[8,20],[0,10],[6,12],[5,0],[8,20],[5,28],[-1,20],[2,29],[-2,15],[-7,15],[-8,46],[-7,29],[6,16],[6,7],[-1,21],[-3,9],[-10,48],[-2,4],[0,21],[-8,16],[-8,30],[16,4],[10,11]],[[5366,4846],[4,-2],[18,2],[12,-3],[21,2],[32,1],[7,-4],[4,-15],[0,-22],[3,-16],[3,-3],[0,-19],[10,-23],[0,-8],[9,-20],[7,4],[6,-4],[2,6],[33,0],[1,20],[4,12],[-2,8],[2,18],[21,0],[9,5],[-3,-22],[36,0],[1,-22],[-2,-20],[5,-23],[-4,-53],[1,-14],[6,-17],[3,-2],[4,-23],[0,-22],[-4,-9],[3,-18],[6,7],[13,-4],[14,9],[12,-3],[2,8]],[[5363,4916],[-7,-5],[-8,-18],[-1,-40],[-8,-2]],[[5339,4851],[-2,5],[2,14],[-6,24]],[[5333,4894],[10,23],[7,3],[4,10],[9,-14]],[[5582,7537],[-1,0]],[[5581,7537],[1,0]],[[5537,7617],[1,0]],[[5538,7617],[-1,0]],[[5557,7633],[4,-13],[7,-4],[3,-22]],[[5571,7594],[-4,-21],[6,-24]],[[5573,7549],[2,-10]],[[5575,7539],[6,-2]],[[5581,7537],[1,-1]],[[5582,7536],[0,0]],[[5582,7536],[0,-5]],[[5582,7531],[1,-5]],[[5583,7526],[0,0]],[[5583,7526],[-2,-13],[-5,-2],[-2,-17],[-11,-8],[3,-12],[-6,-8],[-5,3]],[[5555,7469],[-3,19],[-11,9],[-1,22],[-4,4],[4,16],[-1,29],[5,23],[-7,2]],[[5537,7593],[1,14]],[[5538,7607],[0,13]],[[5538,7620],[9,19],[3,-11],[7,5]],[[5553,8659],[10,-5],[-7,-11],[-10,6],[7,10]],[[5047,7630],[-7,-5],[-1,11]],[[5039,7636],[8,1],[0,-7]],[[6563,6637],[0,0]],[[6563,6659],[2,-2],[1,-36]],[[6566,6621],[-8,-14],[-3,13],[-6,-4],[-1,-38],[7,-9],[-11,-3],[-4,-6],[2,-9],[-10,-44],[0,-17]],[[6532,6490],[-2,-5],[-70,18],[-3,5],[-25,63],[0,9]],[[6432,6580],[6,-1],[0,-13],[12,-3],[10,11],[24,-2],[11,-4],[15,12],[6,14],[1,15],[11,12],[13,31],[11,13],[5,19]],[[6557,6684],[3,-2],[-1,-22],[4,-1]],[[6562,6642],[0,0]],[[3093,2021],[0,6]],[[3093,2027],[0,-6]],[[3093,2028],[0,123]],[[3093,2151],[10,-17],[-8,-15],[11,-6],[5,-17],[12,-13],[7,-13],[17,-13],[11,-14],[12,-7],[20,0],[-5,-16],[-18,1],[-11,-8],[-12,6],[-51,9]],[[3259,3902],[11,-14],[7,-29],[9,-17],[15,-17],[3,-11],[17,-13],[11,-1],[15,-18],[4,-9],[15,-17],[9,-5],[5,-8],[13,-5],[8,-20],[-6,-14],[-3,-19],[-8,-10],[-1,-25],[-3,-14],[-5,-4],[-5,-15],[4,-5],[13,1],[19,-8],[5,-5],[7,4],[5,-5],[6,3],[4,-8],[3,12],[5,5],[10,-9],[5,8],[-1,8],[6,12],[6,0],[11,18],[5,40],[0,22]],[[3483,3710],[5,-4],[6,7],[9,-9],[1,-17],[5,-14],[-2,-9],[0,-25],[-2,-17],[-13,-19],[-15,-5],[-6,-19],[-8,-4],[-6,-13],[-7,-5],[3,-10],[-6,-4],[-20,-39],[-2,-11],[-12,-25],[-5,-2],[-1,-10],[-8,-11]],[[3399,3445],[0,-7],[-7,-12],[2,-23],[-3,-20],[-5,-13],[3,-4],[-2,-14],[-4,-5],[3,-25],[-3,-8]],[[3383,3314],[2,-25],[-2,-12],[-6,0],[-4,-34],[5,-29],[-4,-14],[5,-12],[23,-21],[11,-25],[-7,-19],[0,-13],[7,-17],[12,-6],[1,-29],[-11,-30],[-13,-26],[-2,-16],[-27,-24],[-37,-16],[-27,-8],[-27,0],[-15,11],[3,-32],[5,-9],[-2,-21],[-4,3],[-1,-21],[-4,-5],[6,-17],[-2,-18],[-20,-16],[-21,0],[-26,20],[-8,2],[-4,-10],[5,-32],[-2,-24],[6,-16],[11,-4],[-4,-10],[13,0],[2,10],[-6,0],[14,11],[5,-13],[1,-17],[-3,-12],[-12,-5],[-3,16],[-13,5],[-9,-15],[19,-13],[-20,-17],[-8,-19],[3,-43],[-4,-11],[-9,-7],[0,-20],[-14,3],[-8,-5],[-1,-8],[-14,-5],[-9,-18],[0,-9],[-6,-9],[-2,-14],[7,-25],[7,-6],[8,-16],[6,-4],[17,0],[6,-6],[2,-20],[-5,-33],[-6,-2],[-12,-18],[-16,-14],[-3,-10],[-9,-10],[-6,-22],[2,-16],[-5,-18],[-5,-6],[-23,-14],[-5,-12],[-2,-21],[2,-24],[9,-34],[11,-24],[-3,-1]],[[3098,2168],[-15,10],[-26,10],[-55,1],[-4,12],[-11,13],[6,19],[-5,7],[5,13],[-2,14],[-13,1],[-11,-8],[-3,26],[-7,9],[2,22],[-3,11],[3,15],[9,1],[3,17],[12,10],[1,22],[7,7],[-1,15],[-5,7],[6,30],[8,13],[2,22],[8,9],[-3,32],[4,11],[-4,4],[0,15],[8,5],[5,13],[-8,17],[-14,5],[7,5],[17,3],[2,17],[-18,3],[-1,18],[5,7],[-4,14],[3,7],[-6,16],[5,9],[-11,7],[0,45],[3,8],[8,1],[-5,26],[2,43],[-3,11],[4,27],[5,21],[-2,18],[8,13],[0,25],[15,13],[-3,15],[-1,21],[-5,20],[3,35],[-2,24],[3,12],[10,4],[-1,8],[10,14],[-2,40],[-4,4],[6,6],[0,12],[9,39],[6,2],[-2,34],[3,18],[-9,9],[3,18],[-4,6],[0,16],[-5,12],[-2,14],[3,9],[-5,2],[-3,15],[1,24],[6,8],[0,13],[5,19],[7,8],[2,10],[-4,4],[2,16],[-4,31],[7,10],[1,26],[4,17],[13,33],[9,38],[6,-3],[8,7],[0,10],[-8,21],[0,10],[5,9],[-2,26],[-3,17],[2,15],[5,4],[-6,14],[2,14],[7,13],[25,20],[9,54],[-5,17]],[[3133,3869],[5,9],[0,8],[7,6],[2,12],[9,5],[4,19],[3,-2],[10,-17],[21,0],[12,-5],[6,-38],[3,20],[8,29],[32,1],[4,-14]],[[6265,7522],[0,0]],[[6249,7560],[2,-10],[15,-14],[-6,-16],[6,-11],[11,-10],[-3,-13],[-7,2],[15,-25],[9,-1],[-3,-13],[5,-7],[-5,-5],[3,-15]],[[6291,7422],[-10,-2]],[[6281,7420],[-4,23],[-7,7],[1,10],[-13,-1],[-8,14],[-7,-4]],[[6243,7469],[-8,16],[-12,1],[-11,7],[-3,20],[5,12],[-3,17],[-5,8]],[[6206,7550],[9,0],[11,7],[10,-3],[13,6]],[[6249,7546],[0,0]],[[6255,7542],[0,0]],[[488,408],[24,-7],[-48,-4],[-13,16],[37,-5]],[[542,484],[-90,7],[20,11],[65,-10],[5,-8]],[[3331,592],[8,-3],[-1,-57],[-23,-11],[-52,4],[-17,17],[-32,-10],[-67,20],[3,10],[19,-10],[115,3],[8,27],[39,10]],[[4135,588],[34,-2],[-10,-10],[-44,8],[-5,11],[25,-7]],[[3120,602],[25,-4],[35,-20],[-20,-7],[-40,31]],[[3137,618],[-11,-15],[-30,6],[41,9]],[[4054,618],[1,-6],[-76,3],[30,13],[45,-10]],[[547,618],[21,-9],[14,-23],[-47,-2],[-90,25],[-10,7],[5,17],[24,15],[25,0],[58,-30]],[[3143,666],[-58,-38],[-39,-36],[-31,3],[-10,10],[11,23],[23,11],[92,33],[12,-6]],[[9654,680],[-35,-8],[-8,14],[21,-7],[22,11],[0,-10]],[[3740,650],[1,-7],[44,2],[21,-39],[-7,-30],[-18,-1],[9,-11],[-158,-26],[-16,-9],[-121,-4],[1,17],[22,27],[26,-4],[60,37],[-13,14],[14,40],[31,33],[52,14],[37,-3],[38,-11],[19,-13],[-4,-20],[-38,-6]],[[9641,732],[63,-13],[-27,-10],[-42,-2],[-19,12],[25,13]],[[839,754],[14,-14],[-32,3],[-11,7],[29,4]],[[938,754],[-21,-7],[-2,12],[23,-5]],[[951,834],[16,-10],[-24,3],[8,7]],[[9561,885],[-8,-14],[-7,9],[15,5]],[[1342,903],[19,-12],[-6,-6],[-27,12],[14,6]],[[1458,897],[-1,-13],[-17,20],[18,-7]],[[1760,918],[-17,-8],[-3,7],[26,11],[-6,-10]],[[1680,914],[-12,3],[10,17],[17,-2],[-1,-10],[-14,-8]],[[1635,935],[17,0],[7,-14],[-23,-10],[0,-10],[-32,-4],[-22,7],[3,11],[15,12],[-27,3],[7,10],[55,-5]],[[4425,917],[9,-22],[-14,0],[-4,16],[-29,3],[20,7],[12,19],[11,1],[-5,-24]],[[9717,944],[-11,3],[8,14],[3,-17]],[[1498,961],[13,-7],[9,-16],[-11,-7],[29,6],[17,-9],[7,-11],[-6,-12],[-22,3],[-48,22],[0,8],[-19,7],[-3,16],[34,0]],[[2955,972],[-2,-10],[-13,0],[15,10]],[[2514,979],[-20,-5],[-4,5],[22,8],[2,-8]],[[2918,987],[18,-3],[-8,-40],[-36,14],[-7,10],[11,7],[18,0],[-19,10],[23,2]],[[2474,988],[-3,-19],[-14,-1],[6,17],[-10,16],[23,1],[-2,-14]],[[2365,999],[-10,3],[18,7],[-8,-10]],[[2270,1031],[14,-3],[-2,14],[10,0],[2,-17],[10,19],[19,1],[5,-10],[-23,-11],[8,-3],[27,11],[-6,-10],[13,-10],[-15,-1],[1,-9],[-72,2],[2,5],[-24,-1],[6,7],[-29,6],[-58,7],[6,10],[57,7],[8,-11],[7,7],[23,-12],[-13,13],[17,9],[15,-6],[-8,-14]],[[4919,1112],[8,-10],[14,1],[-17,-19],[-8,18],[-16,10],[19,0]],[[2947,1119],[8,-13],[-22,-10],[-48,-11],[-9,4],[2,12],[33,5],[9,12],[8,-13],[3,14],[16,0]],[[3313,1111],[-7,10],[11,1],[-4,-11]],[[4835,1126],[-5,-10],[-10,9],[15,1]],[[5082,1116],[-11,6],[19,4],[-8,-10]],[[4913,1121],[-10,0],[6,12],[12,3],[2,-14],[-10,-1]],[[7004,1113],[-10,3],[-5,16],[16,-11],[-1,-8]],[[5124,1122],[-12,11],[12,5],[0,-16]],[[5745,1129],[-22,0],[-2,11],[19,6],[5,-17]],[[5040,1146],[-7,-18],[-5,21],[12,-3]],[[2924,1165],[8,-12],[-12,-13],[-23,5],[-1,13],[8,7],[20,0]],[[5449,1148],[-17,8],[11,12],[19,-1],[-11,-8],[-2,-11]],[[3001,1170],[-23,2],[-6,7],[17,4],[12,-13]],[[3283,1179],[-6,-12],[-16,30],[11,2],[11,-20]],[[3055,1197],[19,-24],[1,-17],[16,-26],[11,-25],[3,-60],[-6,-23],[-20,-7],[-2,-10],[-40,-7],[-49,0],[-21,13],[10,8],[16,-3],[45,-2],[14,8],[-7,6],[-28,-9],[-18,10],[35,8],[1,5],[-31,0],[-14,17],[-11,-17],[-31,2],[10,-8],[-14,-9],[-38,14],[-1,15],[15,8],[16,-8],[-4,12],[9,4],[16,-13],[-4,14],[29,-2],[9,7],[-23,7],[10,6],[30,-6],[19,11],[20,0],[13,-11],[-2,16],[-35,7],[5,17],[24,8],[15,-4],[-18,14],[-20,-4],[-27,14],[7,34],[-10,5],[0,20],[45,10],[9,-7],[2,-18]],[[7385,1327],[-15,4],[8,9],[7,-13]],[[3111,1321],[9,-5],[-16,-13],[-8,-22],[-11,0],[-7,9],[22,44],[15,12],[5,-5],[-10,-11],[1,-9]],[[7686,1378],[4,-8],[-14,-2],[10,10]],[[3174,1408],[-3,-16],[-10,-2],[6,17],[7,1]],[[7805,1401],[-19,0],[-1,7],[12,10],[15,-7],[-7,-10]],[[7870,1413],[-16,19],[9,-2],[7,-17]],[[3410,1465],[-6,6],[14,7],[-8,-13]],[[3242,1481],[-2,-9],[14,-8],[-14,-12],[-26,3],[20,26],[8,0]],[[3270,1492],[2,-17],[-12,-8],[10,25]],[[3394,1508],[-2,-9],[20,-7],[-8,-17],[-7,6],[-7,-7],[-14,20],[5,8],[13,6]],[[3446,1521],[-9,7],[15,-2],[-6,-5]],[[0,324],[46,3],[68,-14],[19,8],[194,-14],[21,-11],[128,-2],[122,-11],[81,-3],[-58,13],[54,1],[-124,12],[-104,7],[24,11],[-55,17],[37,2],[-52,17],[-71,-3],[-37,23],[-127,27],[73,-2],[18,-14],[73,-4],[20,4],[70,-3],[6,-14],[50,10],[19,-11],[127,8],[18,9],[-44,5],[81,5],[16,14],[70,14],[-10,10],[-54,26],[31,11],[-19,10],[-74,13],[17,11],[109,6],[135,7],[0,5],[-77,24],[-11,11],[13,10],[43,-4],[46,10],[-17,11],[-75,12],[-55,17],[-3,5],[-68,8],[-43,21],[14,11],[48,6],[-2,14],[-71,-7],[-47,23],[14,18],[-3,26],[9,1],[24,-17],[21,17],[21,-5],[18,4],[38,-10],[-9,-10],[36,-3],[2,10],[72,-30],[30,16],[30,6],[-36,7],[7,14],[32,-17],[21,7],[13,-13],[27,0],[-16,13],[21,1],[-31,15],[29,-5],[-22,20],[-27,16],[-38,-3],[-33,3],[2,9],[28,4],[9,7],[69,-21],[6,8],[-27,13],[9,11],[56,6],[1,10],[41,4],[2,6],[19,-3],[9,-14],[18,0],[-10,14],[29,6],[16,14],[61,4],[30,-4],[-16,9],[4,14],[30,0],[11,11],[22,-4],[18,-16],[30,9],[58,-4],[20,-5],[64,13],[93,0],[8,-7],[45,3],[41,0],[59,10],[-3,10],[24,6],[6,-12],[33,-3],[51,6],[-7,21],[11,10],[21,0],[-9,-7],[19,2],[-8,-12],[4,-14],[15,3],[-18,-16],[-6,-21],[9,6],[46,8],[15,0],[-10,11],[0,20],[15,6],[35,-17],[-5,-19],[-34,-18],[4,-7],[45,4],[84,-10],[53,13],[28,-3],[14,4],[49,-4],[-3,-8],[20,-8],[70,13],[-27,6],[2,10],[-34,3],[17,7],[3,14],[-46,3],[5,11],[-7,15],[-33,5],[-4,20],[42,-4],[3,-6],[47,2],[-5,21],[-41,3],[-46,0],[-11,7],[-4,20],[11,7],[26,-4],[-17,-12],[21,-4],[33,4],[84,-1],[9,-7],[44,-11],[17,7],[24,-7],[21,8],[46,0],[33,-7],[16,10],[25,1],[6,10],[-10,17],[33,-4],[1,-10],[-15,-14],[9,-9],[30,6],[8,-11],[38,11],[5,-13],[28,-10],[20,2],[43,-19],[29,9],[-2,28],[24,-11],[-8,25],[28,-2],[24,-17],[-2,-16],[55,8],[5,-7],[-15,-14],[48,6],[7,5],[34,-5],[26,15],[57,12],[21,-2],[42,10],[35,16],[22,43],[-1,7],[-20,21],[-4,13],[6,23],[-15,38],[-15,16],[4,21],[-13,16],[15,0],[-1,7],[25,-14],[5,14],[11,6],[0,11],[-18,7],[14,5],[-5,17],[6,14],[-9,16],[12,3],[6,21],[-10,5],[-19,-1],[15,30],[6,0],[-2,-17],[15,-6],[1,26],[-4,14],[8,4],[14,-7],[5,34],[14,-2],[-5,11],[19,-4],[3,23],[16,1],[-5,27],[11,6],[16,-7],[-4,11],[20,14],[11,-3],[9,12],[10,1],[-1,10],[14,4],[-1,13],[30,14],[13,-2],[3,10],[12,2],[1,8],[21,4],[7,8],[13,6],[11,-3],[7,-20],[-10,-3],[-2,12],[-15,-12],[-10,0],[-15,-17],[-9,-22],[-9,-6],[-7,7],[-6,-6],[-19,-5],[-17,-29],[-20,3],[6,-10],[-18,-10],[9,-14],[-14,-14],[13,-19],[16,3],[0,10],[21,-2],[-16,-14],[-16,0],[-2,-16],[-5,16],[-19,-3],[1,-28],[-16,27],[-15,3],[-10,-29],[11,-10],[-9,-4],[-14,11],[-12,-15],[6,-16],[-15,-6],[-8,5],[-3,-33],[10,-6],[-12,-11],[21,6],[6,-6],[-20,-7],[14,-6],[-10,-7],[36,-17],[-2,17],[23,7],[-14,-17],[15,-6],[-5,-8],[14,-25],[14,-7],[-2,-21],[15,-13],[-1,-11],[-10,4],[5,-18],[22,1],[-16,-24],[20,4],[9,-21],[-5,-12],[-12,-1],[-14,-13],[14,-1],[11,10],[9,-8],[-7,-12],[-38,-3],[36,-14],[13,10],[0,-26],[-19,-2],[6,-18],[17,8],[-7,-24],[25,4],[-11,-19],[-9,8],[-3,-13],[-15,12],[-21,5],[13,-17],[21,-10],[-7,-23],[-21,5],[21,-13],[-23,-13],[31,7],[-9,-17],[-36,6],[17,-17],[-10,-13],[-13,-3],[-2,17],[-17,2],[6,-15],[-14,3],[-10,-10],[18,2],[7,-9],[-35,-4],[-2,-7],[33,-3],[-85,-34],[-52,-9],[4,-3],[-60,-13],[4,-11],[-17,-7],[-31,-1],[-20,4],[-46,0],[-31,8],[-64,0],[34,-42],[23,-15],[10,6],[66,-8],[-25,-26],[-38,-9],[-61,13],[-95,13],[-30,-6],[118,-34],[-9,-17],[-71,-7],[-61,21],[-37,30],[12,-23],[-13,-4],[17,-20],[42,-17],[17,-23],[18,-7],[2,20],[108,-4],[17,-13],[-20,-24],[-22,-3],[-62,0],[55,-10],[39,6],[24,-26],[-8,-7],[24,-16],[19,7],[38,-10],[7,13],[39,9],[21,-6],[9,-14],[46,-9],[89,-24],[77,-3],[-92,-8],[62,-5],[-2,-4],[-62,-1],[-6,-25],[26,-5],[52,8],[75,3],[-64,-17],[33,-33],[-6,-17],[66,-4],[49,30],[72,31],[52,14],[16,-1],[53,11],[65,5],[59,-2],[6,-17],[-17,-11],[31,-7],[67,24],[-2,10],[36,18],[9,16],[79,27],[42,-13],[34,10],[18,17],[53,0],[40,12],[42,-3],[-21,10],[37,0],[5,7],[153,6],[48,10],[-61,7],[-165,11],[31,17],[-27,0],[9,15],[-73,-12],[-96,23],[-5,14],[12,23],[11,3],[8,18],[24,0],[-7,12],[28,18],[34,10],[17,0],[5,10],[28,7],[15,13],[36,16],[52,10],[29,14],[48,10],[53,7],[31,-4],[22,14],[17,-6],[43,6],[-18,11],[29,26],[-3,10],[14,17],[24,3],[23,-7],[39,33],[-10,4],[-27,-10],[-22,3],[17,4],[-20,7],[1,13],[28,23],[18,3],[12,-9],[16,11],[-15,16],[29,-7],[14,11],[42,13],[3,19],[10,20],[-18,0],[-18,7],[-1,18],[16,2],[1,-9],[21,-10],[7,17],[16,9],[-12,10],[13,4],[3,-10],[22,-7],[10,-28],[15,7],[15,-5],[-4,9],[6,23],[-11,13],[13,5],[25,-7],[16,14],[13,-8],[-20,-29],[71,-3],[7,-9],[4,12],[18,3],[5,-6],[28,-5],[7,11],[12,-7],[-4,-14],[12,-9],[21,25],[13,8],[41,14],[105,20],[19,0],[28,7],[-5,17],[12,2],[-1,-17],[11,-3],[25,9],[-8,8],[9,9],[22,-23],[31,-14],[21,-5],[14,25],[18,7],[-16,10],[16,1],[8,-13],[22,-4],[22,3],[27,-4],[3,9],[17,3],[-3,-18],[45,-4],[11,1],[-6,11],[17,9],[11,-10],[-10,-23],[10,-10],[23,-1],[26,4],[3,13],[16,24],[24,-18],[-21,-6],[14,-7],[26,-5],[13,26],[15,-4],[0,-15],[27,-15],[31,-3],[35,17],[23,3],[38,21],[40,5],[38,11],[7,7],[2,33],[-12,13],[-1,13],[20,12],[28,0],[4,-8],[-21,-13],[24,-1],[20,-13],[-2,-23],[45,4],[8,-15],[7,9],[26,-1],[-5,-7],[19,-19],[2,12],[13,7],[-1,10],[15,4],[-2,32],[4,14],[26,6],[21,15],[28,4],[8,17],[32,8],[24,0],[-6,5],[34,13],[14,-6],[-2,23],[18,5],[14,-8],[-13,-7],[10,-3],[6,-12],[9,8],[16,-6],[-5,-17],[13,20],[-3,14],[16,5],[2,11],[-19,-3],[-6,13],[27,6],[-2,-9],[15,2],[0,-13],[11,8],[11,-7],[10,7],[-14,3],[10,16],[-16,1],[-1,12],[9,14],[23,4],[11,12],[30,4],[25,7],[40,-6],[19,-10],[15,-20],[11,3],[13,-8],[1,-9],[-36,3],[15,-8],[-11,-23],[1,-12],[7,13],[33,10],[23,-11],[12,1],[5,-20],[12,-4],[4,11],[24,0],[18,-7],[45,-7],[24,9],[30,-9],[45,-7],[48,-4],[9,-3],[35,8],[-1,-15],[14,-30],[-13,-3],[-7,-17],[13,0],[-16,-9],[12,-8],[0,-9],[-27,-3],[17,-14],[-13,-6],[9,-5],[-17,-12],[-13,18],[-18,-29],[13,-14],[34,8],[1,-21],[-15,-30],[-17,-8],[-5,-19],[-10,-7],[-6,-33],[-12,-36],[-15,-8],[25,-10],[22,10],[-3,26],[14,11],[34,3],[8,20],[20,6],[-6,7],[17,12],[14,3],[-11,7],[16,40],[17,7],[14,12],[-6,15],[22,23],[15,5],[8,-12],[28,6],[5,-7],[13,8],[-3,16],[35,18],[22,5],[7,21],[16,4],[-7,13],[9,12],[19,10],[73,24],[30,4],[13,-3],[-6,13],[29,18],[36,-4],[9,7],[18,0],[34,17],[8,-5],[14,4],[23,-4],[23,1],[19,14],[25,5],[12,-6],[34,1],[4,-10],[31,17],[11,-4],[8,-10],[13,6],[16,0],[16,6],[13,-10],[14,13],[9,0],[8,-26],[8,11],[13,3],[9,9],[27,7],[14,17],[0,7],[27,0],[8,6],[27,-9],[24,-3],[65,-22],[29,-6],[-3,-17],[12,13],[16,-19],[18,0],[29,17],[7,0],[-5,20],[13,14],[62,17],[35,-27],[-3,-15],[21,2],[16,-8],[3,-10],[-17,-16],[-31,-8],[-11,-15],[25,3],[22,10],[32,6],[13,10],[-3,-10],[19,3],[5,-6],[32,-1],[41,14],[0,-3],[-45,-17],[5,-7],[73,19],[18,14],[58,14],[13,-9],[11,6],[8,14],[14,6],[12,-14],[14,6],[-8,-12],[3,-11],[11,0],[0,-16],[28,6],[11,-7],[10,7],[6,-10],[11,13],[2,21],[16,19],[18,8],[28,-7],[30,4],[8,6],[19,-2],[13,-11],[-5,-11],[19,10],[11,0],[9,12],[4,-14],[13,7],[8,-8],[30,1],[20,-11],[35,-3],[12,-6],[28,-3],[10,-5],[20,3],[14,-13],[27,10],[12,-6],[-4,-11],[21,8],[5,-6],[-22,-38],[0,-10],[11,0],[26,23],[9,-10],[14,7],[14,-31],[13,5],[-8,-14],[8,-7],[23,3],[4,-6],[39,4],[35,-1],[10,4],[-1,-21],[16,-13],[0,14],[24,0],[17,-11],[23,7],[-5,24],[5,3],[24,-14],[2,-10],[16,-13],[14,-3],[17,-14],[19,3],[6,-10],[6,8],[17,-1],[45,-17],[14,-20],[-16,0],[28,-13],[19,-34],[-3,-13],[18,0],[2,34],[16,3],[22,-23],[21,2],[-3,7],[38,-3],[13,-6],[12,5],[13,-6],[-9,-6],[27,2],[18,-20],[10,-3],[48,-30],[2,21],[19,-31],[-5,-6],[-13,7],[-13,-34],[12,6],[-5,-17],[-39,15],[-11,-1],[16,-13],[29,-8],[-8,-19],[-20,-10],[-14,16],[-2,-13],[-32,1],[-12,5],[1,-16],[9,6],[23,-6],[-20,-4],[-5,-9],[-34,0],[9,-14],[-26,-1],[1,15],[-11,9],[-4,-20],[17,-14],[-15,0],[13,-30],[-24,1],[-20,-6],[-3,16],[-30,-30],[9,-7],[-5,-13],[-22,2],[-34,-12],[45,-1],[-4,-7],[21,-16],[-2,-16],[-18,-5],[18,-3],[4,-13],[-13,-11],[14,-5],[-14,-17],[18,0],[20,-30],[-7,-11],[27,-7],[-11,-20],[14,-7],[20,8],[12,-14],[36,-4],[-15,-13],[-12,9],[-47,-2],[-37,-7],[-14,-13],[-34,22],[20,-29],[-38,2],[-9,-8],[9,-14],[-23,-14],[27,3],[-37,-16],[52,-4],[-72,-17],[-6,-13],[61,6],[7,-8],[-35,-4],[40,-4],[-17,-13],[9,-23],[-22,5],[25,-20],[40,-9],[38,-31],[-89,-12],[59,-2],[53,8],[73,-27],[12,-14],[24,3],[-3,-20],[86,-9],[66,-23],[124,-12],[-9955,-15]],[[3456,1546],[12,-3],[-1,-9],[-17,4],[-19,-9],[3,13],[22,4]],[[3431,1556],[12,-2],[-6,-9],[-6,11]],[[3331,1581],[7,-5],[-12,-7],[-4,7],[-20,-3],[-1,6],[30,2]],[[3392,1616],[7,-6],[-33,-7],[10,13],[16,0]],[[3470,1665],[-6,-10],[-5,8],[11,2]],[[6916,2373],[5,-3],[-5,-12],[16,-14],[19,13],[7,-1],[-1,-15],[-9,1],[-11,-5],[2,-7],[13,1],[-1,-9],[-22,3],[-7,8],[-5,-13],[-8,4],[5,20],[-5,14],[1,12],[6,3]],[[9093,2685],[-7,-6],[5,12],[2,-6]],[[9020,2837],[14,-3],[13,-8],[2,-6],[17,-8],[24,13],[5,-4],[5,11],[5,-4],[4,9],[10,-13],[-1,-28],[1,-39],[-7,1],[-1,-22],[-4,-21],[3,-1],[0,-21],[-10,9],[6,10],[-14,1],[-4,-23],[-2,6],[-8,-26],[-9,6],[-14,-1],[-3,20],[-2,-6],[-4,15],[-7,9],[-6,24],[0,13],[9,-9],[-13,31],[-11,37],[-2,13],[4,15]],[[9121,2859],[-9,-6],[0,6],[9,0]],[[9109,2896],[9,-16],[1,-14],[-5,-2],[-11,22],[6,10]],[[9001,2876],[-5,-4],[-1,25],[7,3],[-1,-24]],[[8822,3134],[-1,-10],[12,1],[0,-11],[-11,1],[-5,-10],[-20,1],[-4,17],[21,11],[8,0]],[[9263,3604],[-1,-18],[-2,14],[3,4]],[[9261,3608],[-2,17],[3,2],[-1,-19]],[[8136,3714],[7,-36],[-7,19],[0,17]],[[9257,3758],[2,-20],[-10,-37],[1,32],[5,7],[-2,14],[4,4]],[[9195,3832],[5,-3],[0,-17],[-7,17],[2,3]],[[9061,4133],[3,-7],[-3,-7],[-4,13],[4,1]],[[8880,4236],[-7,-7],[0,-6],[-8,0],[1,8],[10,8],[4,-3]],[[8805,4285],[2,-15],[-4,8],[2,7]],[[8797,4395],[0,-9],[6,2],[-5,-8],[-1,-14],[6,-6],[-8,0],[-6,5],[-1,14],[9,16]],[[8621,4522],[5,-21],[-7,4],[-8,-2],[5,9],[-2,9],[6,10],[1,-9]],[[8624,4533],[6,-6],[14,10],[6,-2],[1,-21],[-14,-18],[-13,16],[-3,29],[3,-8]],[[8682,4547],[1,-13],[-4,6],[3,7]],[[8959,4566],[-1,-8],[6,-7],[3,-19],[0,-30],[10,-9],[-4,-20],[6,-4],[4,-11],[-2,-17],[5,2],[-1,-13],[3,-19],[-2,-19],[5,-20],[3,-22],[5,-2],[15,18],[4,-22],[18,-23],[-3,-12],[2,-6],[2,-37],[3,-8],[-2,-16],[6,-22],[9,-9],[-1,-11],[5,-19],[1,-16],[-3,-34],[9,-15],[-2,-17],[5,-14],[13,-15],[4,7],[2,-12],[8,0],[4,-6],[1,-14],[19,-12],[1,-10],[7,5],[3,-13],[4,1],[1,-10],[-4,-1],[-1,-10],[15,-24],[-1,-8],[8,-30],[0,-14],[3,-20],[8,-7],[5,-13],[-3,22],[4,5],[3,-9],[10,-13],[2,13],[6,-21],[-2,-15],[3,-36],[4,0],[4,-13],[5,-4],[6,-13],[6,3],[4,-6],[6,-27],[8,-7],[4,-25],[10,-6],[0,-27],[6,-16],[-2,-19],[4,-40],[-4,-3],[10,-41],[1,-17],[3,-4],[1,-40],[-7,-21],[-2,-39],[-7,-32],[0,-30],[-3,-28],[-5,-21],[-6,-11],[0,-23],[-13,-15],[-11,-20],[-6,-26],[-5,-3],[0,-26],[-9,-18],[-3,-27],[-4,-14],[2,-9],[-8,-7],[-9,-34],[0,-24],[-7,-34],[4,-21],[-2,-14],[-13,-16],[-33,-2],[-16,-10],[-10,-13],[-13,-24],[-19,-4],[3,-12],[4,7],[-2,-20],[-6,16],[-8,-3],[-4,16],[-3,-3],[-8,9],[5,8],[-2,9],[-6,0],[-1,-10],[-8,-5],[-6,8],[8,1],[3,17],[-6,10],[-15,-14],[10,-2],[-2,-8],[-6,0],[-10,-11],[-14,-22],[-32,28],[-5,-2],[-8,7],[-9,-1],[1,-6],[-8,1],[-4,13],[-14,5],[-10,11],[-3,13],[-13,23],[-3,18],[5,6],[0,13],[-9,34],[-14,26],[6,2],[3,10],[-4,3],[-21,-20],[-8,0],[-1,7],[9,12],[3,33],[-8,16],[-3,16],[-7,-13],[-1,-20],[-5,-23],[-7,4],[-15,-11],[3,23],[11,-3],[3,21],[-1,25],[4,17],[9,19],[-3,19],[6,4],[-8,34],[0,-26],[-3,2],[-6,-11],[-5,-27],[-25,-26],[-8,-24],[-4,-3],[-4,-16],[6,2],[0,-12],[-5,7],[-6,-5],[-6,18],[-1,21],[-3,17],[-11,20],[-4,27],[-12,0],[-2,13],[-4,1],[7,15],[-5,12],[-8,-5],[3,9],[-8,16],[-14,-5],[-10,14],[-7,1],[-9,-6],[-12,18],[-18,14],[-9,-7],[-18,2],[-33,-7],[-27,-23],[-20,-11],[-17,-2],[-14,5],[-18,-19],[-15,-10],[-2,-6],[-17,-8],[-4,-5],[-5,-28],[-7,-16],[-6,-7],[-4,3],[-6,-7],[-3,9],[-19,-3],[-8,-6],[0,8],[-14,3],[-20,-2],[-13,-6],[-16,-1],[-9,-16],[-2,-12],[-16,1],[-3,-11],[-7,-4],[-2,-11],[-20,-8],[-2,-5],[-12,7],[-18,-1],[-15,14],[-10,19],[-10,9],[-4,-3],[-4,15],[0,32],[6,-7],[7,3],[6,18],[-1,36],[3,8],[0,43],[-18,66],[-4,34],[1,32],[-5,22],[-7,17],[0,16],[-11,24],[-2,38],[-5,16],[-11,32],[-7,13],[5,14],[6,-26],[7,6],[0,9],[-9,14],[-4,27],[2,4],[7,-20],[-1,-17],[5,14],[2,-22],[7,-2],[0,30],[-5,13],[-6,26],[-4,4],[-3,21],[-5,16],[1,26],[4,22],[5,6],[0,24],[2,10],[-5,22],[3,7],[7,33],[4,4],[-2,-20],[1,-21],[7,4],[8,34],[23,20],[13,26],[21,22],[5,-3],[8,6],[7,-7],[12,7],[8,14],[17,3],[10,20],[12,-6],[7,6],[12,3],[16,11],[11,13],[9,25],[3,19],[4,4],[16,39],[-4,1],[-2,36],[3,14],[8,17],[6,3],[0,10],[7,12],[-1,-15],[5,-3],[0,-14],[12,-37],[-1,10],[3,13],[-2,11],[7,-10],[-3,24],[-6,5],[6,13],[-5,8],[5,2],[7,-7],[-1,9],[7,-9],[16,-1],[-10,3],[-1,9],[6,4],[1,18],[-4,-11],[-3,18],[1,9],[6,1],[3,9],[5,0],[4,-9],[1,10],[-6,3],[4,17],[11,-10],[0,9],[-8,16],[10,14],[3,-4],[7,6],[1,-11],[3,5],[4,26],[-5,5],[4,7],[3,-19],[9,16],[1,-16],[4,14],[4,0],[-3,11],[6,4],[4,-14],[9,1],[11,-28],[10,-16],[-3,-17],[0,-13],[4,-1],[-1,11],[5,14],[4,3],[12,-5],[9,-11],[-1,11],[7,-5],[3,-14],[4,1],[-3,18],[5,-1],[-6,15],[-7,11],[4,20],[7,4],[1,18],[4,9],[11,12],[-5,9],[0,14],[6,2],[0,12],[6,6],[2,11],[7,-14],[0,17],[4,-2],[-1,12],[9,5],[3,-13],[13,4],[4,-5],[9,5],[7,9],[2,24],[-7,12],[-9,-5],[-5,12],[-5,0],[7,11],[10,-1],[9,-21],[6,10],[7,-21],[14,-7],[4,6],[4,-11],[3,4],[4,-12],[6,-1],[8,7],[11,-18],[13,11],[6,2],[-4,-8],[2,-6],[5,7],[5,-5],[-2,-11],[7,-1],[3,14],[-5,3],[10,9],[4,-17],[3,7],[4,-11],[-12,-28],[4,-6],[-9,-21],[0,9],[-5,-6],[0,8],[-7,-9],[0,-26],[4,3],[-4,-29],[-3,-3],[-7,-24],[-4,-4],[2,-13],[22,-27],[0,-8],[10,-11],[4,-9],[7,1],[10,-14],[10,-7],[9,-21],[7,-8],[20,-9],[4,-7],[1,-15],[22,-24],[14,4],[10,13],[3,24],[7,18],[3,26],[3,9],[-2,9],[3,25],[5,20],[-4,40],[3,16],[-4,13],[1,21],[5,21],[-2,18],[6,14],[-2,11],[-5,-4],[6,28],[6,1],[-2,8],[6,41],[0,14],[5,2],[6,11]],[[5470,7982],[-2,-9],[5,-23],[3,-3]],[[5476,7947],[-3,-17],[-12,3],[-6,-6],[7,-3],[-5,-12],[-1,-22],[-9,-9]],[[5447,7881],[-19,-12],[-16,-2],[-9,-14],[-23,9]],[[5380,7862],[-32,7],[-12,17],[2,7],[-12,-5],[-17,-1],[-4,-11],[-15,6]],[[5290,7882],[-2,7],[-6,-8],[-16,12]],[[5266,7893],[-2,12]],[[5264,7905],[1,14]],[[5265,7919],[4,2]],[[5269,7921],[7,0],[8,-16],[6,15],[12,-1],[2,-7],[9,1],[9,10],[32,4],[6,-11],[3,9],[-5,5],[1,13],[-6,9],[4,7],[12,5],[4,16],[7,-3],[3,13]],[[5383,7990],[7,-9],[18,0],[7,11],[0,12],[11,-1],[20,-13],[10,3],[13,-6],[1,-5]],[[6281,7420],[-19,8],[-9,14],[-9,24]],[[6244,7466],[-1,3]],[[6289,7594],[9,-6],[11,-12],[5,-17],[16,-3],[5,15],[9,6],[5,16]],[[6349,7593],[15,-31],[1,-11],[10,-28],[15,-3],[8,-10],[-11,-3],[-13,-11],[0,-11],[-6,-28],[4,-11],[-5,0],[-1,-17],[-7,10],[-2,-43]],[[6357,7396],[-7,-2],[-6,12],[-11,12],[1,8],[7,2],[-5,18],[6,7],[-10,16],[-4,-1],[-26,-29],[-11,-17]],[[6249,7560],[8,10],[13,-8],[8,-9],[6,1],[6,-8],[4,3],[1,15],[-10,9],[-3,13],[7,8]],[[5848,5045],[-4,-15],[2,-14],[9,-5],[0,-17],[-9,-13],[-9,-34],[-11,-21],[-3,1]],[[5823,4927],[-9,39],[1,21],[-4,4]],[[5811,4991],[0,18],[-4,5],[-2,12]],[[5805,5026],[4,7],[5,-4],[0,-9],[11,1],[5,7],[1,21],[6,-6],[7,7],[4,-5]],[[5166,8104],[10,-14],[1,-10],[-8,-11]],[[5169,8069],[-7,-3],[-4,-16],[2,-14]],[[5160,8036],[-9,-3],[-4,10],[-13,7],[-1,21],[-9,-13],[-10,3],[2,15],[-5,5],[-10,0],[0,6],[-11,5],[-4,15],[-7,-6],[-7,8],[-2,15]],[[5070,8124],[16,14],[7,3]],[[5093,8141],[0,-6],[16,-3],[8,9]],[[5117,8141],[1,0]],[[5118,8141],[3,3],[16,-1],[7,-8],[9,0],[9,-11],[-6,-13],[10,-7]],[[5099,5856],[-3,-17],[7,-16],[0,-19],[3,-5],[-1,-16],[-5,0],[1,-14],[-3,-18],[-6,-3],[0,-9],[-5,-12],[-2,-20],[-8,-4],[-2,-15],[0,-41],[-1,-12],[2,-25],[1,-42],[-2,-18]],[[5075,5550],[-31,-9]],[[5044,5541],[5,3],[-5,18],[1,24],[0,73],[-1,5],[0,43],[-6,13],[-1,37],[-16,23],[0,19],[4,17]],[[5025,5816],[5,3],[1,13],[4,-1],[3,11],[6,-3],[11,2],[8,13],[3,14]],[[5066,5868],[-1,19],[14,10],[10,-21],[2,-8],[6,-4],[2,-8]],[[5006,6041],[-2,-21],[6,-16],[-1,-9],[7,-24],[5,0],[7,-13],[7,-7],[-9,-1],[0,-15],[6,-6],[11,-19],[8,-1],[3,7],[5,-3],[3,-15],[-6,-4],[10,-26]],[[5025,5816],[-12,0],[-18,8]],[[4995,5824],[-8,-3],[-5,-10],[-2,5],[-59,0],[-3,-22],[3,-11],[2,-25],[0,-24],[2,-5]],[[4925,5729],[-4,-4],[-10,24],[-6,5],[-10,1],[-11,-7],[-4,-11],[-11,3],[-4,12],[-3,-1],[-4,24],[-9,1],[-3,7]],[[4846,5783],[3,24],[-2,14],[6,9],[1,19],[-4,14],[8,10],[9,1],[10,18],[-1,24],[6,0],[0,14],[-3,11],[10,13],[15,-13],[5,7],[0,25],[6,-5],[5,21],[11,16],[12,-6],[1,16],[8,3],[11,13],[8,5],[8,15],[8,-4],[8,2],[11,-8]],[[7529,6456],[0,16],[3,-11],[-3,-5]],[[7521,6458],[-5,-7],[2,29],[-4,4],[3,11],[6,-20],[-2,-17]],[[7571,6448],[0,-29],[2,-10],[-12,7],[1,-20]],[[7562,6396],[1,-15],[-7,20],[-1,27],[-3,9],[-2,29],[-11,31],[-5,-14],[-9,0],[-8,26],[1,14],[-4,6],[-9,4],[11,-11],[-4,-10],[2,-12],[-3,-8],[5,-13],[-2,-18],[-6,-9],[-1,-11],[-7,1],[1,7],[-5,6],[-2,-15],[-12,-7],[0,14],[-4,-18],[-4,10],[-1,18]],[[7473,6457],[-6,48],[2,14],[-7,2],[3,13],[-6,8],[0,11],[5,8],[0,22],[-7,0],[-11,12],[-2,7],[4,12],[5,1],[3,18],[13,-1],[-3,18],[-8,1],[-3,11],[-9,14],[2,12],[5,4],[4,14],[5,-9],[11,-3],[7,-14],[7,-2],[2,15],[6,-18],[-2,-4],[1,-32],[15,-8],[23,2],[7,-3],[18,3],[11,-14],[-6,-2],[-5,-31],[-5,-2],[0,-9],[-8,2],[0,-6],[-7,0],[-7,-21],[2,-14],[9,-30],[7,5],[0,15],[5,8],[-1,11],[5,4],[8,-22],[0,-25],[3,-12],[3,-42]],[[5793,7702],[0,-17],[-11,-3],[-6,-14],[-2,-26],[-4,1],[-8,-16],[5,1],[11,-28]],[[5778,7600],[-13,-4],[-6,9],[-21,-5],[-7,-15]],[[5731,7585],[-8,0],[2,-21],[-25,-7],[-9,10],[-8,1],[-2,6],[-14,0],[-8,-7],[-13,0],[-10,-4]],[[5636,7563],[3,22],[-5,18],[-9,5],[-5,11]],[[5620,7619],[5,6],[-3,23],[9,5],[7,17],[-13,15],[-4,15],[1,17],[8,13]],[[5630,7730],[9,-8],[-4,-15],[17,3],[18,-8],[10,3],[21,-5],[4,-4],[11,5],[9,16],[25,10],[10,-10],[15,-2],[8,-13],[10,0]],[[6402,6694],[3,0],[0,-24],[-4,8],[1,16]],[[2971,6401],[-3,-10],[-15,-3],[-1,6],[9,10],[4,-4],[6,12],[0,-11]],[[2969,6475],[8,-3],[-7,-3],[-1,6]],[[2948,6491],[0,-14],[-5,9],[5,5]],[[2889,6546],[9,-13],[-10,9],[1,4]],[[2908,6546],[6,-21],[0,-8],[7,-10],[0,-8],[-7,15],[-1,14],[-5,18]],[[2840,6572],[6,0],[0,-20],[-8,5],[-3,13],[5,2]],[[2908,6577],[-3,0],[-4,16],[7,-16]],[[2830,6632],[3,0],[8,-40],[-8,-11],[-10,14],[7,37]],[[2869,6655],[0,-4],[16,-20],[-1,-29],[-2,7],[3,17],[-6,14],[-11,8],[1,7]],[[2819,6722],[15,-4],[-21,-5],[6,9]],[[2839,6733],[5,0],[16,-25],[0,-11],[-4,-3],[0,-19],[-6,5],[4,8],[0,18],[-8,23],[-7,4]],[[5528,7765],[9,0],[-7,-29],[14,-17],[-10,-5],[7,-13],[-1,-8],[-7,-3]],[[5533,7690],[-8,-3],[0,-8],[-7,-6],[-1,-13],[-4,0],[-1,-26]],[[5512,7634],[-22,19]],[[5490,7653],[-2,3]],[[5488,7656],[0,8],[-35,57],[-8,32],[-7,3],[0,29],[6,2],[10,-12],[3,10],[9,-1],[4,7],[4,-7],[22,-6],[4,4],[19,-3],[2,-11],[7,-3]],[[5781,8416],[4,-6],[9,3],[3,-8],[9,4],[11,-6],[1,-13],[12,9],[16,-3],[11,-11],[-2,-19],[6,-15],[-7,-13],[11,-10],[-3,-7],[7,-14],[15,-15],[-3,-11],[10,1],[11,-9],[6,-11],[-15,-22],[-22,5],[-4,-9],[8,-10],[2,-30],[5,-13]],[[5882,8183],[-23,-2],[-12,-29],[3,-14],[-7,-1],[-6,11],[-15,-1],[-9,-6],[-5,14],[-13,-11],[-11,13],[-16,-10],[1,7],[-13,0],[-1,7],[-21,5],[-10,6],[-28,2],[-19,-4],[-11,-18],[-11,3],[0,-5]],[[5655,8150],[0,34],[-12,10],[6,13],[15,11],[0,18],[-7,25],[-5,28]],[[5652,8289],[20,1],[5,-4],[12,5],[-1,7],[19,11],[1,-8],[8,6],[-7,3],[9,37],[8,1],[3,10],[9,-1],[6,10],[-8,1],[2,20]],[[5738,8388],[11,10],[17,-2],[8,17],[7,3]],[[2547,6247],[-3,-6],[9,0],[-1,-18],[-5,-28],[4,-4],[-4,-10],[2,-16],[-2,-24],[-7,-21],[-5,-2],[-5,-20]],[[2530,6098],[-9,0],[2,51],[0,60]],[[2523,6209],[4,10],[4,-6],[9,26],[0,6],[7,2]],[[3084,4249],[-4,-1]],[[3080,4248],[4,1]],[[3384,4022],[-1,21],[-24,29],[-24,0],[-51,-22],[-4,-23],[-10,-28],[0,-29],[-8,-54],[-3,-14]],[[3133,3869],[-10,-5],[-9,4],[1,16],[-3,11],[0,16],[-4,7],[-3,23],[0,15],[-6,20],[-4,2],[2,18],[-6,6],[1,10],[-3,14],[6,2],[1,8],[-5,11],[7,16],[-13,23],[-3,34],[-3,18],[2,6],[-7,5],[0,8],[-5,18]],[[3069,4175],[-4,17],[7,8],[10,30]],[[3082,4230],[5,-3],[-1,11],[8,5],[0,6],[-7,0],[-1,9],[4,4],[-7,3],[0,7],[-10,17]],[[3073,4289],[6,16],[-7,15],[6,28],[5,6],[3,20],[-6,22],[4,8],[-1,36],[7,11],[2,12],[-16,55],[-9,34]],[[3067,4552],[23,-3],[-1,-8],[10,6],[9,20],[11,3],[11,19],[7,3],[11,20],[19,8],[7,1],[4,-5],[5,9],[3,-32],[-4,-13],[3,-21],[-2,-18],[2,-19],[3,-2],[1,-14],[4,-2],[1,-12],[5,-1],[4,-10],[6,-4],[1,-11],[13,-4],[4,4],[10,-7],[4,-8],[5,4],[9,-20],[4,1],[8,-10],[7,0],[0,-6],[8,-17],[22,4],[18,-27],[-2,-20],[5,-18],[1,-28],[-9,-1],[9,-20],[3,-47],[47,-4],[3,3],[0,-13],[-4,-8],[2,-34],[11,-15],[6,-1],[0,-8],[6,-27],[0,-10],[-6,-46],[-9,-38],[7,-13],[-8,-10]],[[3651,3581],[1,22],[3,0],[-4,-22]],[[3650,3661],[-4,8],[6,7],[-2,-15]],[[3919,4412],[0,-16],[-4,16],[4,0]],[[3660,5124],[-3,3],[4,9],[-1,-12]],[[3588,5149],[0,-7],[-8,-7],[1,9],[7,5]],[[3577,5151],[2,-5],[-4,-19],[-3,-11],[-15,-19],[0,13],[7,10],[0,14],[2,11],[8,8],[3,-2]],[[3573,5156],[5,19],[0,-10],[-5,-9]],[[3608,5175],[11,-6],[9,5],[27,-7],[-2,-14],[-1,-20],[-4,-14],[-5,-5],[0,-14],[-7,-5],[-3,7],[0,-11],[-9,1],[-6,-12],[-14,3],[-4,-6],[-5,2],[-7,28],[1,13],[6,-5],[1,8],[-7,-1],[0,23],[2,17],[4,10],[5,5],[8,-2]],[[3586,5165],[-4,4],[1,13],[7,3],[2,-9],[-6,-11]],[[3625,5187],[3,-5],[-2,-7],[-11,2],[10,10]],[[3599,5183],[-5,0],[-2,9],[6,-1],[1,-8]],[[3624,5200],[-6,-5],[-3,-12],[-14,0],[-1,12],[8,1],[15,9],[1,-5]],[[3600,5213],[1,-14],[-2,-7],[0,23],[1,-2]],[[3609,5216],[-6,-13],[1,14],[5,-1]],[[3608,5236],[0,-10],[-5,0],[5,10]],[[3600,5305],[1,-11],[-5,4],[4,7]],[[3431,5295],[13,-7],[2,14],[-6,10],[5,17],[6,-8],[11,2],[0,4],[10,2],[8,-5],[3,-7]],[[3483,5317],[3,-7],[8,-3],[7,3],[6,9],[5,-7],[6,5],[9,-9],[9,11],[8,31],[1,14],[4,7],[15,44]],[[3564,5415],[5,24],[8,-16],[1,-21],[3,4],[-1,-29],[3,-31],[7,-22],[1,-18],[6,-18],[13,-4],[4,-8],[0,-19],[-7,-4],[7,-3],[-11,-17],[-5,-12],[-4,-17],[-5,-11],[-5,-1],[-9,-17],[-4,-19],[-8,-19],[0,-14],[-7,-8],[-1,-13],[-6,4],[-14,-13],[13,2],[0,-10],[9,7],[7,10],[11,11],[13,17],[-5,-12],[5,-5],[0,-14],[4,-9],[0,-11],[7,-14],[4,9],[6,4],[5,-7],[12,10],[1,-7],[-5,-41],[2,-2],[8,40],[7,18],[2,-8],[8,21],[3,-12],[1,19],[4,-2],[4,16],[1,15],[5,0],[5,12],[2,-11],[4,10],[11,-7],[19,-9],[0,-10],[7,-6],[8,5],[1,-7],[10,-9],[1,-8],[6,9],[-2,-11],[1,-13],[3,11],[5,4],[10,-14],[-3,-5],[6,-1],[3,-8],[-5,-16],[5,5],[3,-14],[-4,0],[-5,-36],[2,-9],[6,14],[1,23],[8,8],[1,-9],[-7,-12],[7,-2],[2,14],[9,4],[6,-4],[-1,12],[4,0],[18,-13],[6,-11],[15,-5],[3,6],[5,-9],[29,4],[3,2],[14,-3],[25,-31],[3,-1],[8,-15],[5,-2],[11,-27],[14,-26],[9,-6],[4,-12],[6,-1],[6,-8],[16,-1],[5,3],[13,-6],[4,-13],[9,-57],[1,-24],[5,-21],[-1,-53],[-7,-40],[-7,-25],[-10,-27],[-3,5],[-2,-16],[-12,-24],[-3,-13],[-10,-10],[-5,-9],[-11,-37],[-15,-52],[-13,-34],[-5,0],[0,14],[-4,9],[-4,-16],[0,-17],[-4,-7],[0,-27],[-2,-5],[2,-28],[-3,-20],[2,-9],[0,-24],[2,-28],[2,-6],[-4,-25],[-6,-53],[1,-31],[-2,-9],[-7,-8],[-7,-30],[2,-51],[-3,-13],[-6,-6],[-9,-44],[-13,-31],[-8,-25],[4,-27],[-5,-10],[-12,-7],[-13,-20],[0,-21],[-17,1],[-11,-3],[0,18],[-7,-5],[2,-13],[-22,-7],[10,7],[-9,3],[-8,-7],[-2,7],[-9,-7],[1,-17],[-10,-3],[-2,-6],[-10,-7],[-1,-11],[-12,4],[-8,-7],[-1,-7],[-11,-6],[-11,-13],[-5,-12],[-10,-9],[-10,-15],[-1,-15],[-8,-7],[-6,4],[1,-17],[-4,-17],[-1,-19],[-5,-6],[4,-6],[-3,-16],[3,-6],[2,-32],[-2,-52],[-4,-17],[-17,-23],[-5,-12],[-14,-39],[-8,-37],[-10,-34],[-12,-25],[-22,-27],[-3,-9],[0,17],[5,-4],[11,20],[5,3],[4,11],[-1,12],[5,1],[0,10],[9,9],[-1,22],[4,-6],[1,12],[-12,-4],[-9,8],[3,-7],[-6,-21],[-1,-24],[-6,-10],[-9,-4],[-3,-21],[-4,-3],[-1,-14],[5,-10],[-5,-7],[-6,-30],[-7,-26],[-18,-28]],[[3517,3240],[-4,10]],[[3513,3250],[2,1],[1,23],[5,4],[2,13],[5,6],[5,-10],[6,18],[-4,16],[-12,-19]],[[3523,3302],[-11,11],[-5,23],[-15,14],[-9,21],[-8,3],[-4,8],[-7,3],[-2,10],[-8,11],[-6,-13],[-4,0],[0,16],[-23,40],[-7,0],[-2,-8],[-11,-2],[-2,6]],[[3483,3710],[0,8]],[[3483,3718],[5,3],[0,26],[4,16],[0,34]],[[3492,3797],[-9,15],[-10,-10],[-13,1],[-3,21],[1,11],[-4,23],[1,21],[-7,19],[-9,1],[-6,12],[-12,-10],[-31,8],[0,36],[3,16],[-9,61]],[[3067,4552],[-11,2],[-7,-8],[-12,3],[0,41],[1,29],[2,20],[-10,-14],[-2,-7],[-9,-11],[-25,0],[-3,27],[-14,7],[-11,0],[7,16],[0,8],[-6,17],[-4,2],[-1,11],[-5,6],[-2,15],[-5,9],[2,9],[-8,14],[1,11],[7,2],[-3,13],[2,13],[11,17],[5,3],[1,12],[-3,14],[8,24],[1,30],[14,14],[14,21],[17,5],[10,6],[5,11],[9,1],[3,-6],[10,-5],[0,5]],[[3056,4939],[6,58],[0,9],[5,46],[0,10],[5,54],[-4,13],[-2,24],[-13,21],[1,42],[12,4],[3,5],[10,-6],[-2,21],[-4,4],[-14,0],[0,37],[8,4],[5,-3],[34,0],[-1,16],[7,-15],[5,4],[9,19],[4,-5],[7,-29],[-1,-21],[6,2]],[[3142,5253],[11,-21],[10,-7],[10,14],[6,-1],[-1,-17],[11,17],[1,10],[11,6],[10,16],[0,-8],[9,16],[0,14],[19,16],[1,14],[-20,4],[2,15],[-6,20],[0,30],[-13,22],[-4,12],[2,5],[4,-10],[12,0],[4,-14],[10,4],[4,-5],[4,7],[4,-5],[7,-18],[7,5],[-1,20],[6,1],[4,9],[7,-6],[18,12],[0,6],[16,10],[10,22],[-2,13],[-3,1]],[[3312,5482],[11,0],[3,4],[8,-12],[-3,-33],[6,0],[5,-8],[-2,-8],[4,-14],[0,-10],[-7,-12],[1,-13],[-4,-17],[-1,-22],[2,-17],[5,-5],[0,-26],[6,-8],[8,-19],[8,-4],[4,-7],[8,5],[0,10],[5,9],[9,-5],[6,11],[7,0],[3,11],[9,7],[9,-8],[9,4]],[[3347,5935],[-4,3],[0,13],[6,-10],[-2,-6]],[[8198,5465],[5,-34],[-7,5],[-2,24]],[[8194,5460],[4,5]],[[8166,5448],[6,-1],[7,5],[7,12],[9,10],[-2,-10]],[[8193,5464],[-7,-9],[2,-17],[0,-14],[-7,-10],[-7,23],[-8,11]],[[7545,6781],[-2,-8],[5,-11],[6,3],[3,-10],[-3,-11],[3,-13],[-5,-4],[-33,-3],[-10,8],[-6,-9],[-11,-3],[-12,9],[-6,-2],[-7,7],[-3,12],[4,10]],[[7468,6756],[3,13],[13,29],[11,14],[12,3],[0,-5],[9,-1],[-4,-10],[18,-5],[5,6],[10,-8],[0,-11]],[[5701,4158],[-1,-8],[8,-27],[7,-13],[6,-21],[4,-29],[8,-13],[14,-17],[7,-3],[3,-9],[0,-15],[12,-1],[-1,-34],[6,-12],[3,-15],[18,-5],[12,-10],[1,-14],[7,-7]],[[5815,3905],[-9,-3],[-3,-13],[-8,-7],[-12,-4],[-12,-27],[-5,-6],[-2,-10],[-11,-7],[-4,-13],[-5,-31],[-8,-10],[-3,-10],[-15,-6],[0,-10],[-8,-41],[-5,-7],[-10,1],[-4,-5],[-17,5],[-10,6],[-13,20],[-7,1],[-7,-5],[-6,-23],[0,-14],[-6,-13],[-8,-7],[-6,-18],[-7,-2],[-2,-10],[-15,0],[-15,4],[0,21],[5,11],[0,19],[-4,13],[-1,14],[-10,29],[-8,10]],[[5554,3757],[0,159],[28,0],[0,212],[23,4],[21,9],[21,5],[9,-27],[15,26],[7,4],[4,-6],[7,13],[12,2]],[[5634,5812],[4,-14],[8,-14],[10,-31],[1,-16],[-1,-21],[-5,-6],[3,-9],[-2,-17],[19,-1]],[[5671,5683],[2,-7],[-4,-11],[3,-6],[16,-5],[8,-17],[5,-3],[1,-11],[-4,-4],[6,-14],[18,-19],[2,-10],[8,-10],[-2,-16],[8,-21],[6,-2],[13,-23],[-1,-15],[6,-14]],[[5762,5475],[-12,7],[-4,-8],[-10,-1],[-12,12],[-6,-3],[-11,9],[-4,-5],[0,-13],[-18,-7],[-5,11],[-6,-10],[-27,-19],[-12,12],[-9,-34],[-3,-5],[-23,9],[-2,-3],[-20,12],[-7,-2],[-6,20],[-13,14],[-3,7],[-10,1],[-17,-34],[-1,-7],[-6,-3],[2,-12],[-1,-27],[1,-13]],[[5517,5383],[-4,9],[-11,-4],[-16,7],[-8,-6],[-15,-2],[-4,-7],[-3,-27],[1,-7],[-8,-34]],[[5449,5312],[-2,8],[0,26],[-4,13],[-5,3],[-15,32],[-6,21],[4,1],[-3,14],[-10,19],[-1,31],[-4,6],[2,8],[1,27],[-7,10],[10,13],[5,24],[3,4],[6,30],[6,14]],[[5429,5616],[9,-4],[7,8],[10,5],[4,11],[2,-12],[5,-7],[23,26],[7,-2],[5,4],[15,1],[15,36],[-6,7],[0,8],[5,5],[17,0],[10,7],[9,-1],[4,12],[8,5],[5,19],[13,24],[5,4],[3,10],[-1,14],[8,5],[0,5],[14,9],[9,-3]],[[2957,7804],[-12,-5],[13,16],[-1,-11]],[[2699,7829],[2,-7],[13,9],[3,-9],[5,9],[9,-4],[2,-11],[-7,-12],[-23,15],[-15,6],[11,4]],[[2665,7849],[6,-2],[-2,-11],[-4,13]],[[3319,7889],[6,-10],[-2,-13],[-7,-22],[5,3],[-19,-34],[10,5],[9,11],[-10,0],[12,21],[4,-8],[11,0],[-7,-23],[-16,-12],[-6,3],[-13,-5],[-5,21],[1,13],[6,7],[10,30],[7,14],[4,-1]],[[3221,7879],[6,-21],[3,6],[12,-8],[33,3],[3,-3],[-17,-10],[4,-13],[-11,-3],[-2,12],[-19,2],[-4,11],[-11,0],[2,14],[-9,-1],[4,16],[7,9],[-1,-14]],[[3503,7956],[10,3],[-1,-7],[-9,4]],[[2562,7993],[-9,-6],[0,8],[9,-2]],[[2924,7774],[20,14],[8,11],[6,0],[2,17],[7,17],[14,11],[5,9],[17,17],[5,-2],[32,22],[14,22],[0,4],[14,20],[0,5],[16,23],[21,20],[44,28],[28,8],[18,-3],[10,-5],[11,-14],[1,-8],[-11,8],[11,-15],[-4,-13],[-11,-4],[-1,-6],[-18,-13],[-16,11],[-3,-5],[-11,0],[18,-11],[9,-15],[8,9],[12,0],[3,-6],[-7,-14],[-1,-10],[-11,-13],[16,0],[-3,-15],[11,-32],[20,-8],[-8,-6],[7,-7],[10,0],[4,-9],[5,5],[24,-6],[10,10],[5,-15],[7,3],[7,-12],[-7,-5],[14,-3],[-1,-4],[-18,-7],[0,-3],[-32,-21],[-9,4],[-4,-9],[-8,1],[1,-9],[-11,0],[1,10],[-9,-5],[-4,-8],[2,-10],[-6,-5],[-8,-19],[-9,-10],[-6,1],[-9,-11],[-5,14],[-9,5],[-1,14],[7,29],[21,24],[22,18],[1,-13],[7,8],[20,9],[-34,2],[-5,-6],[-4,6],[13,15],[-3,9],[-5,-12],[-16,-9],[-17,-16],[-4,4],[-10,-10],[-12,-1],[-8,6]],[[3134,7784],[-9,6],[1,19]],[[3126,7809],[-10,9]],[[3116,7818],[1,1],[-1,74],[-14,17],[-16,-11],[-9,17],[-19,-37],[-4,-23],[-7,-12],[1,-17],[-12,-20],[1,-11],[-18,-5],[-6,-16],[-89,-1]],[[1546,8044],[6,-11],[-14,13],[8,-2]],[[1479,8054],[4,-13],[-7,0],[-4,9],[7,4]],[[3218,8058],[33,-11],[15,-14],[11,-6],[10,-14],[-16,-6],[-24,11],[-14,9],[-2,9],[-22,16],[9,6]],[[1494,8104],[-11,-4],[6,9],[5,-5]],[[1448,8112],[20,-17],[22,-5],[26,-13],[5,-19],[9,-12],[4,-16],[22,-13],[10,-22],[8,-25],[-6,-6],[-11,3],[-22,14],[-14,12],[9,11],[-18,-4],[-9,9],[4,11],[-8,0],[-1,10],[-14,-3],[0,11],[7,3],[-8,5],[-1,10],[-15,-2],[-33,43],[-2,7],[16,8]],[[3447,8155],[6,-8],[7,7],[-5,-17],[-12,4],[2,-12],[7,-5],[-28,-60],[-3,-27],[6,13],[13,21],[12,-13],[7,0],[-17,-14],[11,-17],[15,9],[-2,-16],[12,1],[8,14],[9,-8],[5,3],[15,-10],[-4,-13],[-17,-15],[10,3],[-3,-15],[12,-7],[3,10],[4,-6],[7,9],[-5,-19],[-11,-9],[-7,0],[6,-14],[-6,-9],[8,-15],[2,13],[6,14],[12,6],[-9,-18],[-1,-22],[8,8],[3,14],[5,-19],[-5,-10],[-2,-19],[-5,-17],[-6,3],[-10,-3],[4,26],[-2,5],[-14,-23],[-4,1],[8,31],[1,14],[-5,15],[-18,-29],[-10,-9],[0,-8],[-8,-11],[-9,-1],[-9,5],[3,7],[11,3],[15,28],[-11,3],[-6,-12],[-10,12],[-28,-4],[-25,3],[-6,4],[-18,-6],[-15,-2],[-4,17],[27,37],[-9,3],[-14,-6],[8,9],[6,-3],[9,33],[10,-9],[-2,9],[8,4],[-11,4],[25,78],[8,11],[8,28],[24,18]],[[1448,8147],[-7,0],[2,14],[5,-14]],[[1445,8181],[-2,-17],[-4,14],[6,3]],[[2798,8181],[-3,-7],[-8,3],[11,4]],[[1462,8192],[-15,-17],[2,14],[17,12],[-4,-9]],[[1430,8212],[1,-9],[-8,2],[7,7]],[[2738,8248],[8,-1],[10,-15],[3,-12],[-10,1],[-29,15],[6,10],[12,2]],[[1339,8249],[4,-12],[-6,-9],[6,-21],[17,-18],[-5,-5],[-20,26],[-16,32],[20,7]],[[1427,8244],[3,-10],[-2,-21],[-14,7],[-3,12],[2,20],[14,-8]],[[1419,8255],[-7,1],[4,10],[3,-11]],[[1382,8268],[9,-8],[5,-15],[-7,0],[-15,26],[8,-3]],[[1386,8270],[-9,4],[2,6],[7,-10]],[[1395,8273],[11,-17],[-5,-9],[-21,36],[3,5],[12,-15]],[[1380,8293],[-2,-10],[-7,7],[9,3]],[[1305,8302],[20,-3],[5,-14],[-15,-10],[13,-2],[2,21],[12,6],[-8,-28],[0,-22],[-13,-7],[-9,10],[7,6],[-11,3],[-7,25],[4,15]],[[2815,8428],[-1,-10],[-7,-3],[4,17],[4,-4]],[[2787,8429],[-11,-11],[1,8],[10,3]],[[2801,8446],[-3,-6],[9,-8],[-12,-27],[-8,-3],[2,12],[-9,-16],[-3,4],[14,23],[3,-5],[3,26],[4,0]],[[3293,8462],[1,-19],[-7,7],[6,12]],[[3204,8666],[5,-10],[-11,7],[6,3]],[[3109,8672],[7,-7],[-4,-10],[-10,-6],[-3,7],[5,16],[5,0]],[[3200,8731],[-2,-16],[-16,19],[18,-3]],[[2793,8775],[5,-7],[-8,-30],[-8,-9],[-10,11],[-2,14],[12,23],[11,-2]],[[3203,8784],[8,0],[-6,-10],[-9,3],[7,7]],[[3033,8802],[15,-11],[0,-7],[-13,1],[-7,15],[5,2]],[[2719,8809],[7,-3],[-2,-12],[-27,-27],[-23,-5],[-6,18],[18,27],[8,-5],[9,6],[16,1]],[[2822,8839],[21,-4],[4,-9],[-13,-10],[-16,17],[4,6]],[[3216,8833],[-8,14],[5,2],[3,-16]],[[2857,8849],[12,-6],[0,-11],[-20,14],[8,3]],[[3204,8862],[4,-12],[-12,8],[8,4]],[[3186,8910],[2,-6],[-13,-6],[11,12]],[[2625,8972],[12,-9],[-7,-5],[11,-20],[9,16],[14,-17],[20,-4],[4,-10],[19,-12],[5,2],[16,-14],[5,-23],[19,-8],[-1,8],[22,-21],[-8,-2],[-19,-16],[-26,14],[-12,-1],[-1,17],[-15,-1],[2,13],[-19,-10],[2,-14],[-19,-8],[-9,-19],[-25,-10],[-5,33],[-27,-2],[-14,-5],[8,20],[20,13],[-6,24],[6,15],[0,28],[5,23],[13,12],[1,-7]],[[2638,8984],[9,-10],[0,-16],[-12,13],[3,13]],[[2657,8990],[18,-11],[-3,-6],[15,-10],[-15,2],[-15,25]],[[2936,9103],[24,-5],[1,-12],[-28,0],[-10,16],[13,1]],[[2601,9095],[-7,-12],[-8,5],[-3,16],[9,13],[7,-6],[2,-16]],[[2900,9117],[16,-9],[-4,-11],[3,-24],[-9,-11],[-14,-6],[-31,-1],[-7,12],[0,22],[15,25],[31,3]],[[2096,9122],[-15,8],[14,1],[1,-9]],[[2919,9131],[3,-14],[-16,10],[2,12],[11,-8]],[[2173,9144],[-3,-12],[-12,5],[15,7]],[[2218,9152],[-13,-10],[2,17],[11,-7]],[[2820,9179],[-10,-28],[-16,-3],[26,31]],[[2860,9180],[10,-6],[-13,-11],[-6,16],[9,1]],[[2315,9189],[14,0],[-4,-11],[-10,11]],[[2342,9191],[8,-12],[-14,-3],[6,15]],[[3114,9197],[-2,-10],[-10,3],[12,7]],[[2834,9196],[-16,-12],[-9,1],[20,15],[5,-4]],[[2787,9204],[9,-8],[-21,-3],[4,-8],[-24,10],[16,8],[16,1]],[[2294,9191],[5,5],[10,-12],[22,-14],[6,-20],[18,-3],[-17,-6],[-13,-15],[-33,4],[-9,7],[-25,7],[-3,8],[-11,-6],[-11,11],[33,17],[-4,16],[12,-9],[-6,16],[10,11],[18,-11],[-2,-6]],[[3004,9275],[14,-3],[-20,-12],[-5,8],[11,7]],[[2924,7774],[-11,-4],[-19,-25]],[[2894,7745],[-6,-7],[-19,-10],[-11,-18],[-17,9],[-5,-3],[-30,-8],[-17,-15],[-5,-17],[13,-6],[7,4]],[[2804,7674],[-1,-9]],[[2803,7665],[5,-11],[-36,-7],[-9,-13],[-11,6],[-12,-1],[-32,-36],[-12,-2],[-5,4],[0,12],[5,4],[13,-1],[1,10],[-6,4]],[[2704,7634],[5,9],[1,17]],[[2710,7660],[8,4],[12,20],[-1,38],[4,14],[9,16],[0,12],[-12,25],[11,0],[1,-14],[14,-17],[18,-14],[0,17],[4,6],[6,-5],[-9,17],[2,14],[-10,3],[-10,32],[-12,0],[-10,8],[-39,6],[-3,0],[-30,10]],[[2663,7852],[0,10],[-10,-4]],[[2653,7858],[-3,4],[4,24],[-8,1],[3,23],[-11,14],[5,20],[-25,0],[-8,9],[-12,39],[-22,-2],[-24,14],[-2,-22],[-7,-2],[3,15],[-6,-2],[-5,-26],[-5,-3],[3,16],[-10,-5],[-5,-22],[-7,-6]],[[2511,7947],[-9,-1],[-4,7],[-20,0],[-2,7],[-16,-11],[-8,4],[-10,14],[-8,-7],[-3,12],[-14,11],[-22,-6],[-3,7],[-17,3],[-6,5],[-4,31],[-9,3],[0,-22],[-79,0],[-80,0],[-55,0],[-79,0],[-79,0],[-49,0],[-49,0],[-80,0],[-61,0],[-74,0],[-81,0]],[[1590,8004],[-8,0]],[[1582,8004],[-1,0]],[[1581,8004],[-7,20],[2,14],[-8,-11],[-12,8],[-1,15],[-14,0],[-6,8],[3,18],[-3,5],[-9,0],[-20,12],[-13,-2],[6,17],[-14,1],[-10,6],[-4,-6],[-14,11],[-8,12],[9,23],[13,3],[-9,3],[-10,-15],[-4,12],[0,14],[19,25],[0,13],[-12,-16],[-7,-5],[-8,17],[-4,-12],[4,26],[-10,9],[-10,34],[10,-5],[-8,12],[5,21],[-17,-20],[-3,-14],[-21,32],[-4,26],[-6,-3],[1,17],[7,4],[10,33],[-5,0],[-4,28],[2,8]],[[1387,8402],[0,0]],[[1387,8402],[-1,12],[-9,1],[-9,13],[-10,3],[-14,11],[-7,0],[0,11],[-7,4],[2,10],[-29,56],[-20,40],[-12,8],[-4,12],[-21,22],[3,8],[-13,13],[-25,-11],[-2,-20],[-27,-20],[-5,17],[-43,50],[3,16],[-17,-1],[-9,-8],[-12,6],[-16,1],[0,538]],[[1083,9194],[29,-2],[23,-6],[15,-16],[50,-21],[26,2],[-3,18],[20,5],[-1,8],[29,8],[12,-5],[-9,-9],[24,4],[10,14],[16,0],[45,28],[22,-4],[5,11],[9,-11],[-45,-25],[-27,-6],[-3,-10],[-18,-6],[-4,-15],[-9,3],[-4,-11],[24,-3],[-11,15],[29,13],[15,12],[12,-9],[14,21],[35,9],[0,-10],[23,16],[-2,9],[22,7],[-13,3],[0,17],[23,-16],[14,-32],[15,-16],[20,-9],[9,4],[-8,12],[10,9],[8,18],[10,-1],[-2,-19],[12,0],[-13,-19],[24,-2],[14,8],[6,20],[36,-3],[23,-10],[23,-16],[31,-5],[23,-13],[57,-13],[-9,8],[11,4],[38,-17],[18,-18],[-3,-9],[-26,2],[-8,-18],[-9,-3],[47,-13],[40,-1],[3,4],[36,1],[22,14],[13,-16],[18,0],[7,-21],[6,15],[20,-23],[-7,-21],[25,-29],[-12,23],[1,18],[16,-14],[-4,15],[-9,8],[0,15],[-12,12],[7,19],[35,18],[21,5],[1,13],[-24,-7],[2,-8],[-22,-7],[-16,5],[7,-11],[-22,-3],[-2,12],[-10,-3],[14,20],[27,5],[31,14],[12,-3],[9,-11],[4,-20],[19,-6],[4,-12],[20,-1],[9,8],[5,-11],[27,-14],[21,-3],[23,10],[26,-1],[15,-7],[25,5],[22,-12],[12,11],[-16,12],[-10,-9],[-10,10],[3,9],[-11,11],[27,1],[-8,9],[21,-3],[5,-12],[18,3],[-11,-15],[26,12],[-16,-41],[11,-19],[10,8],[11,-20],[4,16],[-15,26],[7,19],[17,-3],[18,14],[18,33],[-10,8],[-5,-13],[-15,0],[11,34],[18,-2],[2,13],[-22,-5],[-9,14],[-7,-7],[-25,10],[-21,22],[1,14],[9,15],[-12,9],[5,30],[14,6],[8,-7],[5,12],[-13,4],[18,9],[2,13],[18,3],[4,-19],[7,7],[32,-24],[4,-30],[37,-41],[-25,2],[-4,-6],[18,-3],[-25,-18],[20,-9],[18,7],[10,-9],[19,-1],[-23,-12],[14,-11],[6,-20],[-2,-17],[9,-12],[11,12],[4,31],[11,15],[9,1],[28,-27],[5,-32],[-16,2],[1,-19],[8,-19],[17,-15],[-1,-14],[15,7],[-3,7],[14,-1],[1,20],[17,23],[7,37],[25,0],[-10,13],[11,7],[-20,11],[-2,10],[6,23],[7,-4],[20,5],[16,-9],[30,-1],[15,-23],[22,-5],[-6,-12],[-12,-5],[20,-5],[1,-10],[-20,-13],[-17,6],[-2,-7],[18,-11],[-5,-13],[26,-30],[-7,-27],[-13,-1],[-17,-24],[-12,-1],[-10,-11],[-25,21],[16,-30],[-4,-2],[-19,14],[4,-14],[-25,7],[-5,17],[-19,-5],[-18,2],[7,-12],[19,-9],[-16,-15],[-3,-13],[-23,-20],[-16,0],[-17,15],[-31,20],[-10,-3],[-30,2],[32,-7],[14,-11],[11,-16],[56,-5],[2,-11],[-16,-20],[-14,-27],[-18,-15],[-24,1],[-12,10],[4,-14],[-10,-17],[-21,-3],[-19,10],[-14,0],[-37,16],[-8,-2],[11,-10],[4,5],[31,-11],[-10,-11],[18,11],[6,-8],[25,-12],[2,-18],[-22,-16],[-19,5],[-10,-3],[15,-16],[-19,5],[-2,-20],[-8,-12],[-18,-12],[11,-4],[-17,-12],[-19,-60],[-8,-31],[3,-40],[-3,-17],[13,-17],[3,4],[29,-1],[2,-15],[10,-37],[9,-24],[-3,-25],[12,2],[30,12],[15,-3],[15,-12],[30,-8],[12,-15],[13,-10],[7,-15],[10,-12],[11,-1],[32,-17],[21,-20],[12,-3],[19,5],[15,-6],[12,1],[18,-9],[3,-14],[-6,-25],[0,-12],[8,-17],[-2,-23],[3,-13],[-5,-19],[20,-28],[6,-21],[10,-5],[15,-30],[1,-10],[19,-11],[1,16],[10,15],[11,-20],[6,11],[-9,15],[13,19],[2,22],[-6,4],[1,19],[-5,0],[-5,42],[-2,32],[-7,2],[-6,25],[-5,1],[39,22],[16,14],[19,23],[12,21],[4,16],[0,44],[-8,34],[-9,20],[-24,23],[-13,16],[-2,16],[22,21],[-1,20],[14,6],[-1,13],[-7,2],[-7,35],[6,6],[-16,2],[10,15],[2,20],[6,5],[-13,13],[-4,34],[18,16],[21,-4],[32,-14],[34,-1],[14,12],[18,-9],[17,-14],[-1,-8],[30,-19],[-9,-10],[14,-16],[23,-5],[11,2],[2,-11],[12,-1],[2,12],[5,-18],[-12,-15],[6,-26],[2,-26],[-6,-6],[3,-9],[11,-2],[-8,-8],[2,-18],[-19,-7],[10,-3],[15,12],[13,1],[11,-6],[5,-24],[7,10],[9,-20],[28,15],[6,21],[10,-9],[5,18],[7,3],[-2,12],[8,8],[-3,22],[8,2],[7,25],[14,2],[0,-12],[9,-6],[-1,-17],[6,0],[5,-15],[12,-13],[-11,-9],[13,3],[1,-13],[7,1],[4,-11],[-9,-11],[16,0],[-2,-19],[15,-12],[7,-20],[-14,-11],[10,2],[6,-6],[-6,-7],[18,-7],[-8,-18],[-7,0],[5,-13],[-9,-4],[11,-10],[-12,-2],[5,-5],[14,1],[-3,-13],[10,-2],[1,-7],[22,-5],[-4,-5],[3,-16],[-4,-16],[20,12],[-2,-10],[10,-5],[10,9],[6,-22],[30,-6],[14,-10],[-9,-11],[-15,-1],[-1,-6],[-33,-12],[21,5],[3,-3],[-30,-15],[-13,-3],[2,-15],[-11,-14],[38,24],[6,15],[19,9],[-5,7],[24,-1],[11,-22],[-12,-11],[6,-9],[9,15],[30,-19],[4,-15],[-6,-7],[5,-9],[-7,-12],[8,-9],[4,-17],[-8,-15],[-20,-17],[-10,-13],[-8,5],[-25,-14],[-8,3],[-7,-12],[-8,-5],[1,-12],[-13,-8],[0,-8],[-11,-6],[-3,-10],[-38,-3],[-10,-5],[-6,7],[-51,4],[-26,-2],[-37,0],[-5,-5],[-8,5],[-19,-25],[-3,-23],[-4,-6],[-19,-3],[-4,-11],[-24,-18],[-10,-28],[-7,-9],[-19,14],[-5,-2],[22,-14],[-5,-20],[-10,-17],[-6,-3],[-6,-17],[-17,-23],[-15,-1],[-21,-24],[-10,-4],[-7,-18],[-12,-11],[-7,-11],[-6,-2],[5,-8],[-15,-12],[-6,-8]],[[1827,9404],[6,-29],[-17,-11],[32,3],[-4,6],[17,15],[49,-17],[-3,-15],[17,6],[18,-8],[8,4],[-26,29],[23,-2],[24,-23],[11,-1],[-1,-11],[13,-38],[6,-4],[21,15],[-15,14],[-9,45],[0,25],[29,-10],[8,7],[26,-17],[18,-30],[4,-24],[19,-29],[-7,-28],[16,-17],[25,-16],[8,1],[35,-23],[16,4],[4,-24],[-13,-6],[-4,13],[-5,-14],[-19,11],[-14,-26],[22,5],[-2,-17],[9,-10],[-19,-8],[-24,-5],[-49,6],[4,12],[-40,5],[-4,18],[-10,-16],[-17,-13],[-28,-6],[-12,-9],[-56,-11],[-59,-3],[-16,19],[2,22],[-18,5],[-26,-3],[-22,4],[-18,9],[0,6],[-18,12],[-4,14],[39,12],[41,5],[53,-7],[9,7],[22,-3],[-18,14],[-19,2],[-18,8],[-58,-6],[-19,4],[-40,-1],[-19,23],[17,8],[41,11],[13,11],[-48,-10],[-21,6],[13,5],[-36,7],[0,11],[16,17],[13,3],[-13,15],[34,25],[50,16],[27,11],[10,-5]],[[2094,9405],[-16,-22],[-8,1],[-18,19],[-26,12],[13,13],[42,1],[16,-10],[-3,-14]],[[2768,9430],[25,-7],[37,2],[19,-6],[32,-26],[-1,-17],[-52,5],[-28,-9],[-22,6],[-4,22],[-21,5],[1,25],[14,0]],[[2595,9436],[41,-3],[4,-8],[-30,-21],[-18,-26],[10,-20],[-3,-28],[9,-14],[19,-16],[14,-5],[-16,-13],[-13,0],[-8,-10],[21,10],[18,-2],[8,17],[-4,14],[-16,-1],[-8,13],[2,21],[16,1],[-18,12],[-3,25],[14,2],[-6,11],[26,-5],[-19,15],[63,24],[37,-1],[11,-27],[14,-5],[0,-14],[10,-10],[-26,-24],[18,11],[-11,-18],[5,-13],[12,5],[16,25],[23,-13],[11,14],[26,14],[67,-15],[7,-14],[-14,-14],[33,4],[0,-15],[-32,-17],[31,12],[19,-1],[-10,-9],[-4,-17],[12,19],[3,-12],[15,-7],[13,23],[32,-12],[8,-11],[-10,-12],[-11,3],[-13,-14],[4,-6],[25,7],[4,9],[15,2],[3,-9],[-13,-17],[30,15],[-3,-16],[15,10],[31,-11],[-10,-16],[-31,-9],[32,3],[-1,-16],[12,9],[6,14],[24,-23],[2,-12],[-26,3],[-15,-11],[19,-8],[19,1],[16,-11],[-2,-8],[-26,2],[-15,8],[-22,3],[22,-8],[13,-10],[-8,-4],[5,-11],[-43,2],[33,-6],[-9,-8],[29,-2],[23,-6],[-10,-6],[8,-11],[37,-12],[12,7],[-2,-12],[18,-4],[13,-28],[-21,-10],[47,10],[-7,-18],[22,-5],[5,9],[18,-10],[10,-16],[-20,-10],[14,-3],[-30,-8],[14,-7],[-7,-17],[-15,-3],[7,-7],[-17,-1],[-7,16],[3,-21],[-9,-4],[9,-9],[-5,-24],[-17,9],[-9,14],[-1,-9],[-18,16],[-1,14],[-9,5],[19,17],[-31,-5],[-2,9],[-22,20],[2,8],[-13,-6],[-6,-11],[-16,12],[7,-15],[16,-12],[-1,-7],[-20,-1],[-9,18],[-2,-18],[12,-16],[14,3],[-2,-10],[10,-2],[10,-39],[1,14],[31,-16],[-3,-16],[17,0],[-10,-10],[11,-14],[11,-5],[-9,-11],[12,-6],[0,-25],[-7,5],[-4,18],[-2,-14],[10,-29],[-17,5],[8,-19],[-7,-5],[-1,13],[-12,11],[-12,-3],[-13,13],[-5,-5],[-20,21],[-6,12],[-1,-16],[-27,24],[-8,-3],[23,-33],[17,-6],[17,-21],[5,0],[16,-26],[7,-2],[-9,-20],[-30,16],[-35,7],[-12,7],[-25,24],[-9,-2],[-38,22],[-5,14],[15,10],[-16,12],[-2,-7],[-15,9],[-13,14],[-15,33],[-20,-9],[4,15],[-14,-6],[-5,-14],[-30,14],[-5,-12],[-24,-12],[-14,2],[-18,11],[-4,27],[5,9],[18,8],[-3,15],[21,-2],[25,-11],[9,-9],[-6,-7],[10,-12],[-2,16],[-16,17],[23,-3],[1,7],[15,-3],[11,12],[19,-5],[-7,19],[-8,4],[-13,18],[41,32],[5,19],[15,6],[-4,22],[-12,18],[-4,23],[-23,5],[3,18],[-19,-6],[-13,16],[2,15],[-9,-11],[-10,2],[-32,-14],[0,20],[28,3],[1,9],[-30,19],[-15,5],[10,9],[-23,0],[0,21],[-20,2],[-10,12],[-21,2],[21,-15],[3,-13],[-29,-7],[-6,8],[-39,3],[15,-14],[-9,-2],[-14,13],[-15,-11],[-25,12],[-15,-3],[-31,3],[-5,4],[-39,2],[-21,21],[1,-11],[-47,11],[-21,25],[9,7],[22,-4],[27,0],[-15,18],[-6,-3],[-47,6],[-5,7],[5,17],[-9,11],[5,24],[25,52],[36,27],[33,8]],[[2227,9438],[17,-9],[57,6],[4,-12],[-12,-6],[8,-7],[-19,-7],[-19,-16],[35,-3],[9,-16],[12,3],[5,-18],[-9,-6],[3,-27],[-25,-13],[-26,2],[9,-8],[-13,-13],[-19,3],[-13,25],[-27,24],[-21,3],[-34,24],[-4,9],[14,16],[11,-4],[16,-18],[24,2],[10,8],[-4,14],[-11,1],[-28,20],[11,7],[16,-9],[3,8],[-13,12],[33,5]],[[2287,9448],[-13,-11],[-23,-4],[-12,7],[34,10],[14,-2]],[[2423,9449],[18,-8],[8,5],[45,-7],[-28,-33],[-12,-21],[-14,-14],[-33,4],[-13,-4],[10,-16],[-18,-22],[-29,-6],[-2,33],[-11,9],[-2,60],[11,2],[1,14],[44,9],[25,-5]],[[1623,9476],[28,-12],[41,-10],[46,4],[58,-41],[-3,-6],[-28,-9],[-76,-37],[-3,-15],[-14,-8],[-13,1],[-3,-32],[-7,-11],[-22,-7],[-9,5],[-11,-12],[-27,-10],[-26,36],[-34,14],[-14,0],[0,10],[14,22],[9,4],[-4,18],[17,2],[-12,9],[14,21],[16,15],[-10,9],[-14,28],[87,12]],[[2118,9518],[-3,-12],[-30,4],[15,17],[18,-9]],[[2378,9537],[25,-20],[2,-24],[-5,-11],[-41,1],[-43,18],[23,30],[25,8],[14,-2]],[[2325,9539],[-16,-17],[-5,9],[21,8]],[[2164,9558],[-14,-12],[-20,-1],[7,9],[27,4]],[[2380,9546],[-17,10],[11,3],[6,-13]],[[2157,9563],[-38,-10],[11,8],[27,2]],[[1732,9567],[5,-3],[-22,-28],[-10,-5],[-22,5],[20,18],[29,13]],[[2805,9567],[0,-15],[-16,-3],[16,18]],[[2149,9575],[-6,-11],[-43,0],[2,8],[47,3]],[[2113,9595],[25,-12],[-38,-5],[-7,16],[20,1]],[[2266,9598],[21,-11],[7,-58],[-18,1],[14,-20],[-11,-7],[-47,-3],[-20,3],[-11,19],[33,20],[-52,-5],[-33,-7],[2,14],[20,10],[-6,28],[18,3],[35,-31],[7,21],[-30,12],[15,9],[23,0],[13,-10],[20,12]],[[2213,9601],[-38,-8],[20,9],[18,-1]],[[2508,9589],[-10,-2],[-15,15],[17,6],[8,-19]],[[1981,9607],[-3,-11],[20,-20],[-11,-11],[22,-7],[-10,-10],[27,5],[12,10],[31,-10],[1,-18],[-15,-30],[-28,-8],[-21,7],[-19,-7],[-5,8],[-25,-11],[-22,-4],[-24,-12],[-34,-10],[-29,0],[-27,17],[52,17],[27,0],[19,13],[-36,-6],[-3,5],[-44,-9],[-5,24],[-10,-23],[-35,-6],[-55,16],[12,13],[30,0],[31,14],[-30,-8],[-32,0],[10,12],[57,5],[-39,0],[-12,12],[23,10],[10,12],[36,1],[7,-17],[28,5],[33,-21],[14,-22],[62,-1],[6,7],[-32,17],[18,11],[-30,11],[18,11],[15,19],[15,0]],[[1840,9610],[3,-10],[-34,3],[31,7]],[[2354,9618],[44,-6],[16,-16],[46,3],[26,-13],[-26,0],[59,-9],[-2,-7],[-52,-1],[30,-6],[28,-18],[2,-16],[14,11],[11,-8],[26,6],[13,-9],[59,10],[21,10],[23,-5],[16,6],[39,-3],[40,-18],[6,-11],[-25,-15],[16,1],[10,-9],[-23,-7],[-1,-11],[-29,0],[-12,-6],[-33,5],[-7,16],[-11,-16],[-84,-5],[-53,2],[2,20],[-21,-15],[-21,-3],[-30,10],[-10,-4],[-19,9],[1,10],[-13,14],[11,38],[-14,8],[-14,21],[-17,-6],[-37,-3],[6,7],[-27,3],[-11,14],[-18,4],[15,6],[-15,7],[13,6],[32,-1]],[[1774,9644],[20,-9],[-25,-7],[-2,-15],[13,-14],[-30,-8],[-9,-17],[-20,9],[5,24],[-19,-6],[-1,-22],[-34,-26],[-19,-3],[-7,19],[-15,-12],[-46,8],[9,15],[31,5],[9,14],[22,7],[15,17],[27,15],[26,1],[18,-6],[32,11]],[[2491,9653],[17,-10],[-11,-14],[-30,11],[0,13],[24,0]],[[2083,9641],[18,-11],[-11,-7],[-23,12],[-14,25],[13,0],[17,-19]],[[2350,9662],[51,0],[13,-7],[-11,-10],[-70,0],[-6,13],[23,4]],[[2196,9660],[-42,-1],[0,9],[21,1],[21,-9]],[[1824,9675],[20,-11],[-15,-6],[-27,14],[22,3]],[[1955,9679],[-35,-12],[21,-5],[-3,-16],[-52,-10],[-31,11],[3,23],[51,10],[46,-1]],[[1933,9718],[31,-15],[-4,-11],[-50,5],[-52,-7],[-5,8],[40,8],[40,12]],[[2308,9715],[18,-10],[40,-9],[-15,-7],[9,-16],[-51,-11],[-22,18],[22,2],[-33,10],[-10,12],[7,18],[35,-7]],[[2120,9752],[22,-6],[10,-21],[25,12],[58,-29],[-8,-16],[22,-13],[0,-11],[-25,-6],[-19,5],[-12,19],[-45,10],[-50,-6],[-10,18],[38,-3],[1,15],[-18,11],[-27,-9],[10,11],[-26,2],[4,16],[50,1]],[[2237,9796],[21,-8],[-5,-17],[-36,22],[20,3]],[[2423,9866],[56,-44],[40,-1],[1,-15],[22,9],[22,-2],[19,-26],[-9,-26],[20,9],[23,-2],[24,-19],[-46,-14],[-69,-50],[-26,25],[15,-26],[-24,10],[0,-11],[-49,4],[-22,17],[34,3],[-45,2],[-28,21],[25,12],[79,3],[-58,1],[0,12],[-36,-11],[-3,7],[-33,-6],[-14,15],[27,4],[-31,3],[-21,14],[-4,14],[53,-6],[21,9],[-36,-4],[-32,9],[14,17],[41,2],[7,8],[-33,3],[17,15],[39,0],[7,9],[-28,8],[41,-2]],[[3064,9969],[92,-13],[-63,-13],[33,0],[64,14],[63,-22],[36,-2],[8,-17],[-85,-27],[-75,-6],[11,-7],[-78,-18],[137,21],[-4,-9],[-119,-45],[-9,-11],[-28,-4],[-23,-32],[-31,-8],[-32,7],[7,-13],[-52,-10],[-85,-2],[20,-4],[80,-3],[-1,-11],[-35,3],[-9,7],[-57,-2],[56,-5],[-45,-3],[55,-3],[-14,-6],[38,-1],[8,-15],[-22,-5],[-30,2],[38,-10],[-14,-14],[-35,-13],[-43,0],[19,-17],[-14,-13],[-47,-6],[-38,9],[-17,14],[5,-14],[18,-8],[57,-7],[-10,-14],[19,-6],[18,11],[7,-22],[-21,-10],[-5,7],[-22,-15],[-42,-11],[8,17],[-36,5],[-6,-7],[-40,2],[-13,10],[-6,-17],[-23,-1],[-61,10],[-4,-7],[-37,4],[-15,10],[-1,17],[33,15],[23,-1],[15,8],[-21,5],[-15,25],[29,7],[27,-6],[22,-23],[54,-3],[27,35],[-39,-27],[-38,10],[15,39],[-21,-13],[-21,5],[-35,-4],[1,19],[24,20],[44,7],[35,-5],[56,1],[-53,4],[-30,6],[11,9],[-23,27],[-37,6],[0,32],[75,-4],[67,-35],[-7,16],[-44,23],[80,9],[54,8],[-44,0],[94,17],[-62,-3],[-2,9],[57,26],[-37,-9],[-40,-28],[-44,-11],[-53,-5],[27,11],[-48,2],[1,-13],[-55,-1],[-26,5],[26,19],[85,11],[-93,-8],[-33,-21],[-58,14],[99,12],[30,12],[-43,-8],[-98,-8],[-15,8],[12,11],[45,14],[-57,-12],[12,13],[-22,4],[-21,-8],[-14,7],[27,11],[83,15],[87,-6],[-56,12],[43,5],[-12,10],[30,1],[59,-23],[-11,12],[82,-19],[-75,24],[18,17],[41,-8],[-28,15],[47,-2],[16,12],[41,-3],[44,-11],[-31,15],[35,4],[54,-3],[10,-8],[24,12],[91,2]],[[5255,7927],[0,0]],[[5255,7927],[0,0]],[[5255,7927],[10,-8]],[[5264,7905],[2,-12]],[[5290,7882],[-2,-13],[-10,-7],[4,-15],[-6,6],[-12,-4],[-2,10],[-5,0],[-1,-14],[-5,-6],[-1,-18],[-7,10],[2,5],[-11,9],[0,13],[-10,-11],[1,-8],[-9,-12],[-8,4],[-13,-4]],[[5195,7827],[-7,15],[0,14]],[[5188,7856],[-5,6],[-8,-4],[-3,-9]],[[5172,7849],[-4,7],[2,10],[8,9],[0,11],[7,4],[12,28],[8,-5],[5,10]],[[5210,7923],[14,-1],[9,5],[4,9],[9,-9],[9,0]],[[3101,2016],[-9,-10],[13,-7],[6,-18],[-2,-7],[-8,14],[-15,-2],[2,19],[-18,-5],[-1,-4],[-14,10],[3,5],[39,9],[4,-4]],[[3116,2021],[14,-1],[7,-9],[-5,-12],[-7,7],[-9,-6],[-8,1],[-2,15],[10,5]],[[3041,2018],[7,-9],[-19,2],[-1,8],[13,-1]],[[3069,2021],[8,-5],[-19,-3],[-1,8],[12,0]],[[3013,2074],[7,-1],[8,-15],[-5,-7],[-8,10],[-4,-3],[-2,16],[4,0]],[[3003,2080],[6,-2],[-5,-24],[-11,16],[0,7],[10,3]],[[3044,2081],[2,-8],[-9,4],[3,-17],[-9,10],[-1,10],[8,1],[-2,10],[6,7],[2,-17]],[[2972,2103],[2,3],[22,-21],[-6,-2],[-14,-18],[4,15],[-9,1],[-7,-7],[1,12],[-8,1],[3,17],[12,-1]],[[2925,2147],[15,-16],[8,0],[21,-22],[-10,3],[-11,14],[-13,-1],[-10,22]],[[3093,2028],[0,-1]],[[3093,2021],[-12,-3],[-17,9],[-13,-4],[-23,10],[-10,10],[-17,-8],[-1,12],[8,-7],[10,12],[7,-9],[6,12],[-2,12],[20,-15],[7,5],[13,-4],[10,-11],[3,8],[-28,18],[-4,19],[24,15],[-1,8],[-25,-6],[-6,8],[1,17],[9,1],[0,8],[12,7],[2,13],[6,4],[5,-11],[16,0]],[[2952,2165],[-2,-17],[-9,0],[-2,7],[13,10]],[[2921,2176],[8,-2],[-6,-7],[-2,9]],[[2938,2182],[8,-11],[-5,-6],[-3,17]],[[2920,2209],[3,-4],[-3,-19],[-5,7],[5,16]],[[2943,2211],[3,-10],[-9,5],[6,5]],[[2925,2234],[1,-8],[-9,1],[8,7]],[[2931,2257],[2,-13],[-14,-1],[-1,9],[9,-2],[4,7]],[[2924,2263],[1,-11],[-8,7],[7,4]],[[2906,2275],[8,0],[-10,-15],[2,15]],[[2931,2276],[3,1],[5,-22],[-5,0],[-6,13],[3,8]],[[2908,2302],[14,-5],[0,-6],[-18,-9],[1,12],[7,-5],[-4,13]],[[2903,2329],[8,-14],[-12,3],[4,11]],[[2914,2359],[5,-2],[0,-12],[-9,10],[4,4]],[[2906,2359],[2,-6],[-9,-5],[7,11]],[[2925,2377],[5,0],[2,-27],[-3,-27],[3,-13],[-9,-10],[-4,6],[1,25],[-4,-21],[-7,11],[-2,25],[13,-3],[2,12],[-7,18],[10,4]],[[2906,2392],[1,-9],[-7,-5],[-2,13],[8,1]],[[2924,2406],[4,-8],[2,-18],[-14,4],[-1,6],[9,16]],[[2913,2413],[9,-4],[-1,-11],[-7,-2],[-5,19],[4,-2]],[[2907,2415],[7,-32],[-6,0],[0,16],[-5,-5],[-3,20],[7,1]],[[2921,2430],[3,-17],[-11,6],[-1,6],[9,5]],[[2945,2427],[4,-6],[-19,2],[7,7],[8,-3]],[[2914,2436],[-3,-8],[-5,6],[8,2]],[[2924,2545],[-1,-11],[-10,7],[11,4]],[[2936,2556],[-5,-9],[0,15],[5,-6]],[[2955,2556],[-6,-2],[3,11],[3,-9]],[[2948,2591],[3,-16],[-7,2],[-6,12],[10,2]],[[2946,2594],[-9,-4],[3,9],[6,-5]],[[2946,2613],[2,-4],[-11,-6],[-4,10],[13,0]],[[2974,2623],[6,-4],[-12,-23],[-4,-1],[-5,16],[7,2],[-1,11],[9,-1]],[[2948,2662],[3,-7],[-11,0],[8,7]],[[2945,2775],[11,1],[5,-30],[-8,-2],[-4,-15],[9,-10],[-6,-5],[6,-13],[-7,-2],[2,-14],[-17,3],[-3,4],[7,21],[-1,36],[4,8],[2,18]],[[3098,2168],[-21,9],[-7,-4],[-3,-12],[-8,-1],[-27,-20],[-3,-19],[-1,-36],[-7,-5],[-24,11],[-10,15],[5,11],[15,1],[10,5],[6,18],[-5,1],[-22,-19],[-5,6],[-7,-20],[1,-10],[-20,22],[9,0],[-1,20],[14,1],[13,9],[14,0],[-2,5],[-21,3],[-19,-19],[1,-11],[-6,-4],[-8,6],[6,5],[-9,6],[9,1],[2,11],[-11,-5],[0,29],[6,-2],[15,16],[9,-1],[0,13],[-7,-6],[-15,13],[10,-15],[-6,-4],[-4,-13],[-8,7],[0,17],[-9,7],[-1,13],[6,2],[1,13],[-6,-6],[-7,4],[-1,17],[11,-2],[-1,9],[-6,-4],[-5,21],[-13,14],[9,8],[1,26],[3,6],[-5,9],[0,44],[10,11],[-11,13],[-3,13],[21,-4],[6,-13],[5,5],[-10,27],[-1,-6],[-21,1],[-2,12],[9,-2],[-7,11],[6,12],[5,0],[6,11],[-6,2],[-3,12],[-11,0],[-1,-5],[-11,14],[4,11],[-13,-16],[2,-11],[-6,-3],[-4,19],[13,13],[3,10],[12,11],[0,11],[14,3],[6,-14],[-1,-8],[7,-4],[-7,-18],[4,-3],[5,16],[4,49],[8,10],[-3,20],[4,-1],[14,13],[1,15],[-14,13],[4,39],[-1,17],[9,12],[-3,14],[0,18],[5,2],[-3,15],[5,3],[4,-15],[0,27],[-8,-3],[-4,6],[8,12],[-10,13],[-3,-13],[-12,-6],[-7,4],[2,7],[-5,11],[-2,27],[5,20],[1,37],[9,7],[4,19],[1,19],[-9,38],[2,30],[-6,26],[1,22],[9,-3],[5,16],[0,18],[4,-4],[5,42],[6,9],[-1,15],[6,18],[5,6],[1,15],[4,12],[1,31],[6,21],[4,4],[1,12],[-4,23],[6,5],[4,37],[-4,9],[1,25],[-5,52],[0,24],[2,12],[7,5],[2,44],[-5,10],[-1,19],[6,11],[4,20],[0,18],[3,22],[4,2],[-1,30],[4,5],[2,15],[2,41],[-2,11],[2,19],[6,8],[-1,24],[-2,5],[1,62],[3,17],[-6,0],[1,25],[6,1],[4,33],[0,23],[2,25],[2,3],[0,24],[-3,10],[0,37],[2,6],[-1,31],[-5,51],[0,21],[-2,8]],[[3044,4127],[12,4],[4,9],[0,26],[9,9]],[[8073,6343],[8,-9],[1,-20],[-9,-13],[-7,-43],[-4,0],[-5,-15],[-9,-1],[-2,-11],[-14,6],[-14,12],[-1,42],[10,19],[8,9],[-1,10],[7,-3],[5,9],[8,-6],[10,10],[8,-9],[1,13]],[[8066,6398],[4,-5],[-8,-2],[4,7]],[[8393,6916],[2,-7],[-8,4],[6,3]],[[8386,6994],[-10,4],[-11,15],[6,2],[9,-11],[8,-5],[-2,-5]],[[8689,7778],[-2,10],[-10,6],[-11,-7]],[[8666,7787],[-4,7],[-12,-22],[-11,-4],[0,-9],[6,-40],[-2,-28],[3,-6],[-5,-31],[-19,-10],[3,-13]],[[8625,7631],[-8,13],[0,9],[-9,7],[-4,-13],[-1,-19],[-14,-5],[-1,-10],[-7,-10],[-26,-3],[8,-20],[-3,-13],[-30,7],[-2,12],[-9,1],[-12,-34],[-9,-16],[-6,0],[-8,-10],[-16,-14],[-14,-21]],[[8454,7492],[-5,-13],[-6,-5],[-9,3],[-11,-3],[-28,-28],[-3,-9],[-8,-11],[-3,5],[-7,-13],[-10,-4],[0,12],[15,8],[-10,29],[6,0],[-2,11],[12,12],[11,27],[-3,13],[-22,14],[-12,-7],[0,-7],[-10,-13],[-4,-16],[-14,-7],[-17,-19],[-1,-19],[-10,-15],[-10,0],[-7,-8],[-11,11],[-6,-6],[-5,-28],[5,-14],[10,-13],[14,-4],[7,5],[12,-25],[-7,-1],[-2,-21],[10,-12],[13,1],[2,11],[10,10],[3,9],[12,10],[11,-8],[0,-6],[9,-7],[34,-4],[-7,-15],[3,-13],[-9,-5],[-5,9],[-28,-23],[-6,3],[4,-11],[-7,-1],[0,-17],[-11,-5],[2,8],[-8,2],[2,-13],[-7,-22],[-8,-4],[-7,-26],[-5,-3],[1,-16],[12,-14],[17,-12],[6,-38],[11,-36],[-1,-21],[15,-16],[0,-13],[11,-10],[4,-16],[-8,1],[-9,9],[-10,-3],[-4,11],[-11,2],[-5,-7],[-7,4],[-3,16],[-6,2],[3,-11],[11,-13],[16,4],[2,-9],[7,-5],[8,-15],[9,-9],[6,-12],[2,-13],[-9,-2],[-12,-10],[-8,-11],[-5,-15],[6,-2],[6,9],[6,-1],[8,-19],[13,-6],[-13,-19],[7,5],[0,-22],[-4,-6],[-5,3],[1,-27],[-5,-3],[5,-23],[-5,2],[-4,-10],[-3,12],[-9,-28],[-8,-17],[-3,-23],[-6,-4],[-1,-11],[-9,-7],[-1,-8],[-5,9],[-4,-6],[5,-6],[2,-11],[-5,4],[2,-10],[-5,-15],[5,-3],[-3,-18],[-4,0],[6,-17],[-11,10],[-4,-8],[5,-14],[-9,1],[-3,-9],[3,-10],[-10,0],[4,-9],[-3,-8],[-6,3],[-5,-5],[-2,8],[-5,-13],[3,-11],[-5,-4],[-1,-10],[-6,-1],[-7,-13],[-4,1],[-5,-14],[-6,5],[0,-9],[-10,-21],[-1,-10],[-6,1],[-13,-12],[-7,6],[0,-11],[-14,8],[-5,-13],[-6,11],[-5,-7],[4,-8],[-4,-3],[-2,9],[-5,-3]],[[8172,6482],[-4,-2]],[[8168,6480],[-7,-3],[-2,17],[-3,-1],[-2,15],[-6,-8],[6,-17],[0,-15],[-2,-9],[-10,20],[7,-19],[-10,-14],[-5,1],[-13,-12],[-10,3],[-11,-15],[-25,-8],[-3,-10],[-6,-1],[-7,-13],[5,-7],[-1,-13],[7,-9],[-4,-10],[-13,-2],[-1,10],[-7,25],[3,28],[5,0],[0,8],[-8,1],[-2,14],[-1,-16],[-12,1],[0,6],[-9,2],[-9,13],[2,-16],[-6,7],[0,-8],[-9,-5]],[[7999,6420],[-7,10],[-9,-4],[-12,14],[1,6],[-10,2],[0,14],[-4,7],[0,14],[5,0],[0,16],[-14,0],[-18,12],[-7,14],[-14,-13],[1,-9],[-14,-14],[-3,8],[-6,-8],[0,-9],[-11,16],[-4,-12],[-5,11],[-7,-21],[-5,10],[-13,9],[-4,-20],[-3,0]],[[7836,6473],[-13,3],[-4,-12],[1,-10],[5,-15],[0,-39],[-5,6],[-9,-2],[-2,20]],[[7809,6424],[-2,12],[-7,-6],[-3,-8],[-8,-4],[-2,5],[-5,-6],[-2,13],[-4,3],[-1,19],[-14,5],[-6,-1],[0,16],[4,5],[-1,14],[6,11],[-5,13],[-8,-2],[-7,5],[2,6],[-6,40],[6,9],[-9,-3],[-13,1],[-14,-14],[-2,5],[5,10],[-1,18],[-4,0],[0,17],[7,8],[-2,12],[4,11],[2,-3],[6,10],[0,13],[6,-3],[3,13],[7,6],[-4,6],[5,33],[0,29],[-2,31],[-7,4],[-1,-9],[-7,20],[0,16],[-8,13],[-9,9],[-5,-18]],[[7703,6808],[-7,9],[-4,-3],[-7,15],[-7,1],[5,6],[-4,17],[-9,21],[-12,-9],[-6,0],[-6,-9],[-9,4],[-9,11],[-8,-6],[-3,-16],[-9,-6],[-6,-8],[-7,-1],[-9,-16],[-12,-14],[0,-11],[-9,-9],[-12,-5],[-8,2]],[[7468,6756],[-4,12],[3,18],[-1,10],[-6,5],[-13,-14]],[[7447,6787],[-8,2],[-4,-5],[-15,1],[-3,7],[-14,9],[-4,-11],[-9,10],[-3,-11],[-2,13],[-6,7],[-16,3],[2,17],[-4,3],[-7,-6],[-9,11],[-7,12],[-2,16],[-5,5],[-13,-7],[-9,26],[-9,2],[-9,15],[-10,8],[-1,15],[-14,5],[-11,-23],[-7,11]],[[7248,6922],[-11,15],[-10,6],[1,9],[-14,15],[-4,-3],[-9,13],[-5,16],[-9,-8],[-2,12],[4,5],[-4,7],[2,15],[-9,14],[-2,20],[9,4],[6,-16],[10,8],[7,13],[-5,14],[0,12],[-7,3],[-8,16],[-3,33],[8,8],[0,7],[-10,12],[-9,5],[-8,41],[1,9],[-7,0]],[[7160,7227],[-18,1],[-11,8]],[[7131,7236],[-5,6],[0,8],[-13,-4],[-4,10],[1,27],[-7,15],[-9,1],[0,7],[-8,7],[-7,-2],[-9,4]],[[7080,7327],[7,10],[-8,13],[3,7],[-5,17],[-1,26],[-12,9],[-6,0],[-2,-9],[-6,3],[-4,16],[4,9],[-6,12],[1,14]],[[7045,7454],[8,8],[-3,9],[4,18],[11,3],[10,14],[3,10],[11,-4],[8,11],[4,-20],[18,4],[9,13],[0,10],[5,15],[18,-2],[11,5],[5,-2],[8,19],[26,23],[27,15],[-1,8]],[[7227,7611],[1,3],[-3,23],[3,11],[9,6],[-7,5],[13,6],[-4,13],[2,7],[-11,37],[0,32],[5,5],[-18,8],[7,9],[21,5],[23,13],[3,-9],[13,3],[7,-7],[4,17],[-11,7],[7,21],[9,47],[5,14],[0,14],[24,-13],[21,1],[4,-10],[13,13],[7,0],[5,9],[-4,41],[4,25],[25,10],[4,10],[0,17],[4,6],[12,-1]],[[7424,8009],[15,5]],[[7439,8014],[-4,-17],[9,-8],[-2,-9],[16,-10],[2,-12],[14,-12],[11,1],[7,-11],[9,3],[11,-21],[0,-11],[15,-34],[1,-11],[-5,-14],[3,-17],[-7,-13],[-2,-16],[6,-17],[6,2],[16,-9],[23,-4],[11,2],[23,-8],[6,-13],[7,0],[14,-19],[9,-5],[11,2],[-2,-16],[6,-3],[9,-41],[12,-19],[2,-11],[23,4],[63,-13],[14,6],[49,-12],[7,-15],[29,-11],[18,-15],[23,7],[0,-12],[13,-5],[6,10],[44,30],[36,10],[20,-3],[20,4],[25,19],[15,29],[18,12],[10,13],[-9,18],[-7,23],[11,33],[5,4],[13,-1],[5,-10],[14,-6],[13,-3],[16,16],[14,24],[6,-3],[23,5],[15,18],[-1,7],[11,24],[6,3],[15,-1],[1,13],[9,-4],[16,12],[12,-3],[3,5],[14,-8],[11,-1],[5,6],[-4,23],[-18,25],[0,6],[-10,7],[-6,11],[-10,5],[-12,-3]],[[8270,7946],[-7,-13]],[[8263,7933],[-5,-6],[-13,13],[-17,-1],[-11,-9],[-7,10],[-2,13],[8,8],[-1,12],[25,79]],[[8240,8052],[16,-12],[14,-6],[12,9],[13,17],[12,1],[7,6],[1,14],[-4,6],[8,27],[7,10],[1,11],[8,23],[16,14],[3,17],[-4,7],[3,13],[-8,5],[-12,-1],[22,37],[12,1],[26,11],[19,0],[11,6],[28,-11],[4,-9],[20,-1],[17,-13],[23,-49],[-3,-10],[6,-23],[6,-9],[1,-20],[10,-19],[1,-23],[7,-6],[-2,-23],[5,-9],[11,-7],[20,2],[7,-14],[13,-3],[9,-7],[11,-17],[12,0],[-4,-13],[6,-8],[2,-13],[-4,-13],[7,-20],[15,2],[13,-5],[17,3],[3,9],[12,14],[12,-1],[6,9],[18,8],[9,-7],[-4,-13],[6,-17],[-8,-19],[-9,-6],[-4,-38],[-5,-13],[2,-9],[-11,-22],[-1,-15],[-8,-8],[-2,-21],[-8,-3]],[[4913,5477],[0,-1]],[[4913,5476],[0,1]],[[4925,5729],[-2,-26],[3,-1],[4,-47],[-8,-15],[-6,-39],[-7,-28],[2,-31],[2,-4],[4,-31],[5,-1],[2,-13],[-3,-14]],[[4921,5479],[-10,3],[-3,-4],[-15,4],[-5,4],[-18,3],[-3,-9],[16,7],[6,-3],[-22,-5],[-22,-3],[-38,-25],[-5,-8],[-12,-10]],[[4790,5433],[-1,2],[0,41],[5,10],[-1,33],[-10,7],[-1,13],[-6,7],[-10,3],[-6,8],[8,15],[1,23],[-5,23]],[[4764,5618],[7,-1],[3,10],[3,27],[-7,4],[2,14],[7,0],[5,-7],[2,15],[-8,9],[1,12],[5,5],[-5,6],[2,13],[-5,-2],[-3,7],[1,32],[4,6]],[[4778,5768],[4,2],[5,14],[5,1],[3,-12],[9,-6],[2,12],[7,-1],[1,18],[8,-5],[-1,8],[5,2],[2,-15],[-2,-13],[6,-3],[3,9],[11,4]],[[5402,5930],[2,-13],[7,-8],[3,-17],[-1,-10],[5,-3],[2,-34],[-2,-3],[-1,-26],[3,-28],[9,-22],[6,-8],[-7,-3],[-9,3],[-10,-4],[-15,3],[-7,-19],[11,-27],[17,-29],[3,-1],[8,-30],[2,-17],[4,-2],[-3,-16]],[[5449,5312],[-3,-5],[2,-25],[-18,15],[-7,3],[-10,-2],[-8,12],[-9,-3],[-27,0]],[[5369,5307],[-6,5],[-48,3],[-1,-7]],[[5314,5308],[-38,0],[-4,10]],[[5272,5318],[0,12],[4,27],[-1,12],[-8,18],[-2,13],[6,11],[-2,8],[-10,-11],[-10,10],[-2,29],[-11,-4],[2,17]],[[5238,5460],[6,19],[1,41],[4,2],[10,24],[10,13],[2,14],[10,13],[3,-8],[7,1],[1,9],[8,-5],[7,-14],[1,-16],[7,1],[6,15],[-1,8],[10,15],[-2,17],[5,9],[0,9],[5,14],[1,25],[16,23],[2,34],[9,9],[2,17],[-1,14],[6,5],[3,30],[12,34],[6,-1],[11,14],[1,37],[-3,10],[-10,4],[-3,40]],[[5390,5936],[7,0]],[[5397,5936],[-1,-11],[6,5]],[[5398,5936],[1,0]],[[5399,5936],[-1,0]],[[5944,7202],[0,0]],[[5944,7202],[-3,0]],[[5941,7202],[0,0]],[[5941,7202],[3,0]],[[5905,7208],[0,1]],[[5905,7209],[1,0]],[[5906,7209],[1,0]],[[5907,7209],[-2,-1]],[[5935,7200],[1,-2]],[[5936,7198],[-7,-1],[-1,11],[-17,-6],[-3,7]],[[5908,7209],[0,0]],[[5908,7209],[3,-5],[17,6],[1,-10],[6,0]],[[5807,5072],[0,-19],[-2,6],[2,13]],[[5762,5475],[2,-10],[7,-8],[0,-10],[16,-18],[12,12],[6,1],[5,-9],[7,12],[0,6],[10,-5],[0,-12],[4,-3],[7,-21],[10,-6],[0,-14],[6,4],[2,-10]],[[5856,5384],[2,-7],[-5,-19],[3,-15],[-4,-19],[8,-3],[8,-13]],[[5868,5308],[-10,-15],[-12,-24],[0,-15]],[[5846,5254],[-7,-6],[-2,-13],[-6,-5],[0,-21],[-3,-7],[-4,-25]],[[5824,5177],[-7,-9],[-3,-12],[1,-13],[8,12]],[[5823,5155],[-1,-6],[-1,-46]],[[5821,5103],[-7,-8],[-3,-9]],[[5811,5086],[-3,1],[-7,-28],[3,-9],[-3,-10]],[[5801,5040],[4,-14]],[[5811,4991],[-2,-3],[-1,-49],[4,11],[-1,-27],[-3,-5],[0,-30],[7,-28],[-1,-13],[-4,-5],[10,-49],[6,-14],[6,-6],[6,-13],[2,-29],[7,-10],[2,-12]],[[5849,4709],[-28,-8],[-19,-7]],[[5802,4694],[-16,-35],[0,-23],[4,-2],[2,9]],[[5792,4643],[4,-21],[-1,-21],[1,-34],[-5,-16],[0,-10],[-4,-17],[4,-25],[9,-11],[6,-17],[14,-4],[-2,11],[9,5],[0,-75],[-5,1],[-1,12],[-10,-10],[-7,1],[-2,14],[-6,17],[-4,-2],[-1,13],[-5,13],[-16,7],[-6,6],[-3,16],[-5,7],[-1,12],[-5,0],[-1,-16],[-7,-8],[-10,6],[-11,0],[-4,7],[-14,8],[0,26],[-17,-7],[-8,-8],[-4,5],[3,14],[-8,6],[-4,9]],[[5366,4846],[-9,2],[-4,-10],[-7,-3],[-7,16]],[[5363,4916],[8,-9],[0,-6],[8,11],[1,14],[7,-2],[12,12],[2,-8],[-3,-7],[1,-20],[9,0],[4,6],[10,27],[8,8],[1,8],[9,4],[10,35],[-1,29],[1,13],[-1,26],[12,25],[0,7],[11,30],[8,5],[12,27],[0,21],[3,25],[3,7],[-2,14],[1,28],[5,27],[-1,34],[16,57],[0,19]],[[5333,4894],[-5,13],[0,10],[-15,33],[-5,6]],[[5308,4956],[2,12],[8,13],[5,-10],[5,-2],[4,22],[-8,9],[3,10],[-7,12],[2,7],[-1,20],[4,-5],[6,5],[4,-5],[11,5],[-1,24],[5,5],[5,-5],[5,-26],[11,-4],[9,13],[1,6],[9,-22],[5,9],[0,20],[5,5],[1,41],[-2,10],[3,23],[-9,9],[-3,11],[-5,0],[0,27],[5,19],[5,0],[6,16],[-5,18],[0,11],[-14,6],[-7,-9],[-7,-3],[-4,22],[2,23],[3,9]],[[3018,5865],[-19,-13],[-7,-27],[-6,-1],[-7,-26],[-5,-13],[-2,-37],[-11,-37],[11,7],[1,-11],[4,2],[4,-28],[8,-16],[1,-19],[-4,-7],[1,-28],[7,-3],[3,-18],[7,-5],[5,4],[18,-4],[9,7],[10,-10],[7,-1],[18,-46],[5,-2],[7,8],[11,-5],[29,8],[4,-18],[-6,-10],[0,-17],[-5,-6],[0,-66],[5,-28],[4,-2],[5,-17],[-15,-35],[7,-6],[11,-18],[0,-12],[4,-17],[5,-39]],[[3056,4939],[-8,22],[-6,-2],[-7,6],[18,59],[0,7],[-26,25],[-10,-10],[-2,7],[-8,7],[-6,-11],[-10,-7],[-8,6],[-9,-5],[-7,8],[2,12],[-2,17],[-10,6],[1,12],[-4,13],[-7,3],[-5,10],[-5,2],[-4,26],[-6,11],[-5,2],[-8,14],[-5,-2]],[[2909,5177],[-11,11],[-3,-1],[-7,15],[-8,7],[-3,-12],[-9,-1],[-19,10],[-1,14],[-7,11],[-11,5],[-13,16],[-7,13]],[[2810,5265],[-5,10],[5,13],[7,-2],[-3,14],[0,13],[7,19],[10,-5],[0,9],[9,-4],[1,22],[12,29],[0,6],[7,20],[-6,-5],[-4,5],[-1,15],[3,16],[-2,57],[-5,2],[9,12],[0,7],[-7,20],[3,5],[1,19],[-5,6],[-3,17],[-7,14]],[[2836,5599],[2,14],[13,12],[1,13],[4,2],[-6,28],[-3,3],[3,11]],[[2850,5682],[12,-31],[1,-12],[5,0],[-1,29],[-4,10],[7,5],[10,15],[6,23],[12,4],[2,15],[-3,1],[3,13],[-1,20],[3,2],[0,16],[8,14],[11,14],[9,-5],[-3,-8],[7,-4],[4,18],[1,14],[10,-3],[15,1],[6,12],[10,13],[13,10],[3,11],[-1,9],[6,1],[12,10],[8,-6],[3,-18],[-6,-10]],[[6235,4487],[1,-17],[-4,8],[3,9]],[[6207,4496],[-7,9],[1,21],[4,1],[-1,-12],[3,-19]],[[4324,6037],[-5,9],[5,2],[0,-11]],[[4340,6065],[8,-16],[-5,-7],[-4,7],[1,16]],[[4365,6116],[5,-8],[-8,-3],[3,11]],[[4303,6173],[3,-6],[-7,-10],[-3,11],[7,5]],[[2676,5812],[7,-32],[16,-36],[7,-10]],[[2706,5734],[-3,-5],[-5,7],[-2,-8],[0,-23],[6,-10],[-5,-4],[2,-19],[-6,-11],[4,-16]],[[2697,5645],[-2,11],[-5,9],[0,15],[-9,5],[5,-10],[0,-10],[-12,12],[3,27],[-8,14],[-10,11],[-11,8],[1,10],[-12,21],[-4,-7],[9,-12],[-6,-16],[-6,15],[-10,5],[-5,19],[1,16],[3,2],[1,15],[-8,5],[7,2],[0,9]],[[2619,5821],[2,7],[21,-15],[5,7],[13,-10],[0,-5],[8,-5],[8,5],[0,7]],[[2698,6446],[5,-3],[4,-17],[-10,-9],[-8,8],[7,1],[-4,15],[6,5]],[[2836,6454],[6,-1],[-1,-7],[-5,8]],[[2823,6481],[-2,-7],[-7,5],[9,2]],[[2914,6329],[-1,4]],[[2913,6333],[-1,0]],[[2912,6333],[-2,-4]],[[2910,6329],[-10,-1],[-15,6],[-21,-3],[-2,-3],[-21,-3],[6,17],[9,10],[3,9],[-8,15],[-19,-1],[-13,20],[-1,18],[-6,16],[-14,-5],[-10,8],[-8,0],[-10,11],[-5,10],[-13,-1],[-13,8],[-13,4],[-7,11],[12,1],[1,7],[-7,6],[-25,1],[-10,-21],[-7,-9],[-15,0],[-2,-15],[-3,2],[-11,-11],[1,10],[-11,-3],[10,9],[5,0],[-2,15],[3,11],[12,15],[14,8],[3,6],[19,3],[9,8],[27,-2],[3,-6],[15,2],[6,-8],[10,1],[11,-12],[9,-20],[15,-1],[13,-13],[5,-1],[7,-16],[12,-5],[-3,9],[12,-16],[5,-11],[23,-17],[0,-5],[12,2],[3,-6],[-5,-10],[2,-9],[20,1],[7,-5],[9,-19],[5,2],[2,-9],[-3,-6],[-13,0],[-10,-9]],[[3089,5876],[-11,16],[3,2],[8,-18]],[[5905,7209],[1,0]],[[5941,7202],[-6,-2]],[[5908,7209],[6,1],[0,11],[14,-4],[17,8],[15,13],[0,-3],[-19,-22],[3,-11]],[[5938,7197],[0,0]],[[5938,7197],[0,0]],[[5937,7198],[0,0]],[[5944,7202],[-3,-6]],[[5941,7196],[0,6]],[[5936,7198],[0,-1]],[[5936,7197],[-3,-9],[-16,-11]],[[5917,7177],[-8,1]],[[5909,7178],[-7,3],[-5,11],[1,9],[7,7]],[[5907,7209],[1,0]],[[5411,8112],[4,8],[9,-9],[14,-7],[6,-6],[12,-3],[-7,-8],[13,-20],[10,7],[-4,12],[9,-2],[19,-24],[4,4],[7,-7],[8,0],[8,-23]],[[5523,8034],[-8,-1],[-12,-15],[-1,-11],[-15,-14],[-9,4],[-8,-15]],[[5383,7990],[-10,11],[-13,20],[-10,9],[-7,17],[3,13],[-5,11],[6,13],[26,11],[3,8],[9,1],[13,9],[-2,8],[15,-9]],[[5255,7927],[0,0]],[[5394,8289],[0,-4]],[[5394,8285],[0,4]],[[5371,8330],[6,-3],[4,-14],[-11,-5],[-6,4],[1,12],[6,6]],[[5262,8339],[4,3],[12,-11],[5,-15],[13,-5],[11,2],[1,-9],[-10,-8],[12,-2],[8,-7],[5,14],[11,2],[14,11],[13,4],[3,-10],[10,-8],[6,2],[3,-17],[13,-10]],[[5396,8275],[3,-23],[-5,-27],[12,-14],[-3,-9],[7,-21],[-4,-20],[2,-11],[7,-4],[2,-14],[-6,-20]],[[5269,7921],[-15,12],[1,-6]],[[5210,7923],[-2,4],[8,55],[9,11],[2,10],[-16,4],[-4,7],[-18,-1],[-13,17]],[[5176,8030],[4,20],[-6,3],[-5,16]],[[5166,8104],[-3,14],[9,22],[0,9],[-8,12],[5,10],[8,-4],[10,5],[8,28],[-10,5],[2,9],[8,1],[4,18],[0,16]],[[5199,8249],[-3,19],[6,6],[21,2],[6,-18],[0,12],[8,-4],[2,20],[9,1],[-8,29],[10,6],[-9,13],[-1,9]],[[5240,8344],[22,-5]],[[6201,5844],[-9,-28]],[[6192,5816],[-6,4],[-22,-7],[-4,8]],[[6160,5821],[0,12]],[[6160,5833],[0,24],[10,22],[7,22]],[[6177,5901],[8,-6],[3,9],[9,11]],[[6197,5915],[6,-14],[2,-25],[-10,-14],[-7,-3],[-3,-11],[13,3],[3,-7]],[[3294,6081],[4,-5],[0,-15],[-3,-3],[-3,16],[2,7]],[[5312,8347],[17,-10],[-1,-7],[-10,-1],[-8,6],[2,12]],[[5348,8350],[-12,-5],[4,7],[8,-2]],[[5272,8355],[7,-12],[-8,2],[1,10]],[[5413,8363],[6,-13],[-9,3],[3,10]],[[5287,8385],[7,0],[6,-15],[-2,-16],[-19,1],[-11,24],[19,6]],[[5342,8415],[7,-3],[0,-22],[-11,-12],[8,-11],[-13,-8],[5,-3],[-8,-10],[8,-5],[-9,-11],[-4,32],[-13,0],[-2,28],[13,12],[5,-13],[14,26]],[[5247,8463],[-2,-13],[-9,0],[11,13]],[[5240,8344],[-2,32],[-14,7],[3,14],[6,5],[-4,11],[-4,-6],[0,34],[16,1],[7,12],[9,-10],[-3,15],[18,12],[-32,-9],[-5,-13],[-7,3],[11,20],[17,1],[9,6],[10,19],[20,10],[-6,-10],[3,-20],[-7,-15],[2,-23],[12,-1],[5,-6],[-6,-16],[-11,2],[-4,-20],[-20,-21],[6,-16],[-7,-5],[8,-8],[-8,-10]],[[3006,6222],[2,16],[-6,10]],[[3002,6248],[0,0]],[[3002,6248],[-1,2]],[[3001,6250],[-1,4]],[[3000,6254],[8,11],[-2,9],[4,12],[-4,32]],[[3006,6318],[3,11],[14,-4],[4,6],[11,-10],[5,1],[4,-8],[11,0],[4,-20],[6,2],[11,-3],[-2,-5],[-11,2],[0,-8],[24,-7],[12,-20],[-9,-23],[-8,11],[-17,0],[-9,4],[-8,-14],[-9,-2],[-3,12],[-9,-8],[-5,2],[1,-9],[-10,-31],[-6,8],[-4,17]],[[5238,7310],[2,-6],[-7,-4],[1,-6],[-8,-8],[6,-5],[-4,-35],[3,-10],[-1,-19],[4,-5],[-4,-8],[-3,-30],[-11,-11],[-1,-9],[-7,-8],[-1,-14],[7,-25],[0,-11],[10,-7],[6,-15],[2,-20],[19,-24],[7,-62],[6,-44]],[[5264,6924],[-7,-7],[11,-29],[5,-37],[-2,-44],[4,-19],[-5,-34],[2,-21],[3,-4],[-2,-20],[-10,-9],[-3,-10],[18,-52],[0,-25],[5,-5],[1,-10],[6,-6],[7,5],[21,-13],[3,-4],[11,-43]],[[5332,6537],[-28,-35],[-99,-122],[-24,-40],[-17,-32],[-8,-8],[-39,-15]],[[5117,6285],[-26,-9],[-5,7],[4,15],[-2,11],[1,14],[-8,8],[-12,4],[-9,16],[-2,-4],[-9,5],[-4,14],[-14,12],[1,19],[-14,18],[-28,40],[-8,9],[-36,49],[-21,30],[-8,9],[-51,70]],[[4866,6622],[-64,78],[-16,21],[-28,33]],[[4758,6754],[0,22]],[[4758,6776],[0,59],[12,18],[18,22],[7,0],[8,8],[10,0],[27,5],[6,-5],[7,21],[11,17],[11,11],[6,11],[17,8],[3,14],[-8,21],[4,4],[1,15],[23,9],[-3,14],[12,5],[35,-3],[0,17],[6,7],[-11,14],[-4,11],[2,8],[-5,10],[2,18],[-4,8],[2,24],[-4,15],[3,6],[-4,7],[2,9],[-12,19]],[[4938,7203],[8,0],[18,16],[2,12],[11,12],[8,0],[1,7],[6,-5],[8,2],[5,15],[24,22],[25,4],[10,4],[8,-2],[11,13],[3,-4],[12,2],[9,8],[21,-1],[13,-7],[8,-8],[10,11],[14,5],[6,10],[12,-12],[8,2],[0,9],[9,-1],[7,-10],[13,4],[10,-1]],[[2774,5010],[-4,-1],[0,11],[5,9],[5,-3],[-6,-16]],[[2519,5143],[-4,-14],[-5,0],[9,14]],[[2493,5154],[0,-14],[-8,2],[1,11],[7,1]],[[2459,5168],[2,-12],[-7,2],[-1,8],[6,2]],[[2478,5174],[6,-6],[-5,-6],[-4,5],[3,7]],[[2463,5192],[4,-22],[6,-11],[-1,-9],[6,-10],[-4,-13],[-13,-3],[-3,10],[12,14],[-9,21],[-3,18],[5,5]],[[2909,5177],[-10,0],[6,-20],[4,-4],[-1,-13],[2,-13],[-5,0],[-4,-27],[-15,-40],[-16,-25],[-33,-24],[-9,-21],[1,-7],[-6,5],[-1,-22],[-8,-31],[-1,-17],[-4,-3],[-1,-12],[-4,-7],[-8,2],[-5,16],[0,9],[-8,2],[-9,11],[-8,-11],[-2,5],[4,10],[-5,9],[10,10],[-2,22],[-3,6]],[[2768,4987],[11,12],[6,40],[-3,5],[-4,-11],[-1,15],[-7,-22],[-11,18],[-7,5],[5,13],[-1,22],[-2,5],[2,15],[-4,19],[10,7],[3,21],[-1,11],[12,24],[1,31],[-2,13],[12,11],[19,9],[4,15]],[[5949,6986],[2,-6]],[[5951,6980],[17,-99]],[[5968,6881],[-4,-12],[-3,-33],[-5,-16],[0,-26],[-5,-14],[-13,15],[-6,17],[-10,16],[-1,26],[-8,12],[-5,14],[-2,23],[-4,-1],[-4,-16],[6,-10],[3,-16],[0,-14],[4,-6],[14,-42],[5,-5],[5,-36],[4,-4],[5,-25],[0,-11],[11,-43],[15,-51],[8,-35],[15,-29],[-8,3],[2,-41],[3,-16],[6,-13],[10,-6],[2,-8],[16,-29]],[[6024,6449],[-78,0],[-73,0],[0,14],[-6,-14],[-57,0],[-71,0],[-46,0]],[[5693,6449],[0,421],[-3,10],[-1,24],[-4,13],[6,20],[3,17],[-4,22],[0,14],[8,16]],[[5698,7006],[1,-7],[7,-2],[12,7],[14,-6],[27,-8],[1,-7],[8,-5],[5,4],[4,-9],[21,-6],[8,-9],[13,7],[16,22],[4,-4],[4,14],[3,-3],[11,6],[-9,-10],[9,2],[7,11],[13,-9],[8,5],[-3,-15],[7,-4],[1,-7],[6,2],[0,9],[6,-10],[7,-4],[31,7],[9,9]],[[6111,6097],[3,-11],[8,-6],[-12,2],[-2,8],[3,7]],[[6177,5901],[-6,15],[-8,12],[-5,18],[-14,19],[-7,23],[-5,10],[-10,7],[-5,9],[-9,-1],[-10,9],[-10,-6],[-5,10],[-3,-8],[-13,-5],[-6,16],[-3,-1],[-6,12],[-9,-45],[-6,19],[-5,1],[-2,-8],[-10,1],[-6,-4]],[[6014,6004],[-3,51],[6,17],[1,18],[3,5],[5,24],[-2,23],[3,6],[-1,17],[12,-2],[3,17],[21,13],[5,18],[5,9]],[[6072,6220],[9,-35],[0,-9],[6,-31],[1,-24],[3,-23],[4,-4],[0,-17],[5,-2],[2,-22],[4,-1],[-2,18],[3,4],[6,-7],[0,-17],[6,-8],[3,5],[6,-3],[3,-12],[12,-6],[12,-31],[2,-9],[9,-6],[3,-12],[3,1],[4,-13],[1,-13],[4,2],[6,-13],[0,-8],[10,-9]],[[5941,7196],[-3,1]],[[5938,7197],[-2,0]],[[4503,6784],[-3,-9],[-5,3],[8,6]],[[4571,6803],[1,-17],[-5,-6],[-6,6],[2,19],[8,-2]],[[4552,6828],[-7,-11],[-2,-14],[-7,-8],[-6,21],[12,4],[4,8],[6,0]],[[4604,6803],[7,35],[5,-4],[-4,-26],[-8,-5]],[[4503,6844],[4,-7],[-3,-16],[-4,14],[3,9]],[[4626,6861],[0,-6],[-9,-10],[-1,11],[10,5]],[[4919,7214],[-1,3]],[[4918,7217],[1,-3]],[[4851,7247],[-1,5]],[[4850,7252],[1,-5]],[[5043,7435],[2,-6],[-6,-9],[-6,2],[10,13]],[[5088,7483],[0,-11],[8,0],[-7,-23],[-4,-6],[-8,7],[-3,10],[-9,0],[9,14],[14,9]],[[5114,7490],[6,-11],[-3,-3],[-12,12],[9,2]],[[5055,7627],[0,0]],[[4950,7681],[11,-8],[1,-9],[16,-8],[6,-11],[6,3],[8,-7],[20,0],[0,9],[18,-7],[3,-7]],[[5047,7630],[8,-9],[8,4],[6,-5],[12,8],[7,-3]],[[5088,7625],[4,-5],[-6,-6],[3,-18],[-4,-6],[-23,-20],[-3,-10],[-17,-6],[-15,-8],[-8,-13],[5,-6],[-8,-7],[-7,-18],[-8,-14],[-11,-32],[3,-21],[6,-15],[7,-7],[-21,-22],[-9,-36],[4,-6],[-19,-4],[-12,-20],[-2,-15],[-7,-12],[-5,6],[-7,-1],[-3,-8],[-6,4],[-42,-1],[-7,-13],[-15,-5],[-4,-16]],[[4851,7264],[0,0]],[[4851,7264],[-6,-7],[-14,11],[-9,24],[-2,18],[-12,13],[-14,2]],[[4794,7325],[-3,18],[7,27],[6,2],[3,10],[-5,0],[-6,14],[1,17],[6,6],[3,12],[-5,3],[-5,22],[-6,12],[14,0],[4,14],[-4,17],[7,8],[-1,30],[-3,6],[8,16],[6,4],[6,14],[-10,6],[0,16],[-16,2],[-2,-7],[-11,-3],[-3,3],[-13,-3],[3,13],[-4,6],[-15,-10]],[[4756,7600],[-4,7],[8,12],[-7,6],[1,13],[-6,-4],[1,10],[-7,18],[12,17],[5,-3],[11,5],[-2,4],[13,17],[6,2],[13,-13],[36,2],[14,-2],[17,-9],[16,0],[17,6],[3,-6],[11,-2],[10,4],[16,-8],[10,5]],[[5628,8557],[8,2],[12,-10],[-17,-13],[-15,-4],[-10,7],[0,13],[22,5]],[[5631,8581],[8,-10],[-15,-8],[-3,11],[-9,4],[19,3]],[[5778,8608],[4,-7]],[[5782,8601],[-5,-1]],[[5777,8600],[3,-1]],[[5780,8599],[-7,-9]],[[5773,8590],[-4,-10]],[[5769,8580],[-12,1],[-9,-8],[13,-28],[6,-22]],[[5767,8523],[5,-8],[-7,-3],[-6,-16]],[[5759,8496],[-14,5],[-8,-6],[-15,19],[-26,13],[-21,-12]],[[5675,8515],[7,26],[-10,-3],[-13,5],[-6,13],[-3,20],[6,3],[-5,14],[18,5],[6,10],[30,1],[8,10],[35,-13],[27,-2],[3,4]],[[6160,5833],[0,-12]],[[6192,5816],[-8,-22],[5,-23],[5,-13],[6,-8],[1,-13],[4,-12],[5,-4],[12,-21],[51,-34],[31,-23],[28,0]],[[6332,5643],[-21,-43],[-31,-61],[-14,-31],[-14,-34],[-5,-9],[-27,3],[-20,-14],[-8,-12],[-1,-8],[-9,-7],[-12,-2],[-7,-13]],[[6163,5412],[-19,-3],[-3,2],[-9,19],[-26,-24],[-8,-27],[-25,12],[-15,0],[-7,11],[-28,36],[-23,1],[-3,10]],[[5997,5449],[-4,8],[0,27],[-2,9],[-11,-2],[-1,9],[-5,7],[-3,12],[0,13],[-4,11],[-3,24],[-6,5],[0,8],[-6,4],[-7,24],[-9,16],[-19,8],[-1,9],[5,9],[0,17],[12,3],[2,-5],[7,3],[5,9],[-1,50]],[[5946,5727],[4,33],[3,9],[-1,22],[7,18],[6,-7],[5,5],[0,25],[4,16],[-1,14],[6,8],[2,12],[11,31],[11,1],[0,19],[3,19],[6,24],[2,28]],[[5634,8649],[-3,-11],[-9,9],[12,2]],[[5804,9158],[-14,-7],[8,-9],[-8,-12],[7,-21],[18,-7],[18,-21],[-2,-10],[-23,-30],[-1,-9],[13,-20],[11,-25],[5,-23],[-10,-1],[2,-32],[-7,-6],[6,-11],[9,-1],[-2,-23],[14,-8],[1,-11],[-17,-18],[14,-16],[21,-15],[9,-17],[-9,-24],[-25,-28],[-15,-23],[-18,-22],[-10,-7],[-27,-31]],[[5772,8670],[-31,-8],[-19,-2],[-8,-8],[-15,0],[-6,-6],[-38,-11],[-10,-6],[-10,17],[3,10],[-12,-6],[2,10],[-10,0],[-12,14],[-5,-7],[-8,8],[-2,23],[5,3],[3,23],[-5,25],[-5,3],[3,22],[-6,2],[3,27],[13,9],[-5,12],[11,-3],[13,8],[-5,9],[17,9],[3,10],[13,6],[10,18],[17,18],[5,16],[25,8],[-4,14],[2,17],[-33,19]],[[5671,8973],[-15,37],[10,20],[-12,20],[5,16],[-7,26],[5,3],[-23,26],[-21,5],[-41,32]],[[5572,9158],[12,1],[7,14],[10,-2],[21,-31],[22,-6],[20,12],[27,-15],[7,13],[18,12],[-1,17],[6,22],[15,15],[16,-2],[22,10],[17,-16],[18,-7],[6,-12],[-14,-14],[3,-11]],[[9954,4093],[-5,-13],[-7,0],[12,13]],[[9951,4184],[0,-5],[9,-12],[2,-26],[-10,-2],[-3,-6],[-10,-2],[-15,11],[-1,12],[5,7],[-2,6],[7,12],[18,5]],[[0,4252],[9987,-23],[-2,-11],[4,2],[7,14],[0,-17],[-16,-2],[-1,7],[-11,-10],[-4,-9],[-7,15],[12,16],[13,4],[2,8],[-9984,6]],[[3351,2225],[4,-3],[-17,-28],[-11,-4],[-4,-11],[-8,-4],[-11,12],[16,3],[-4,17],[12,1],[-13,15],[11,-5],[9,6],[15,-3],[1,4]],[[3368,2227],[7,2],[4,-8],[12,3],[4,-18],[-17,-11],[-16,0],[8,-4],[-12,-6],[1,-10],[-11,5],[3,-11],[-9,12],[6,17],[13,11],[-3,14],[10,4]],[[6541,3981],[5,-2],[5,-13],[-1,-13],[-7,-1],[-6,6],[-4,14],[8,9]],[[6252,4454],[4,-5],[-1,-13],[-3,-1],[0,19]],[[3483,5317],[7,10],[4,16],[2,29],[4,19],[-10,24],[-3,26],[-1,25],[4,16],[5,9]],[[3495,5491],[3,5],[3,18],[12,-10],[11,-4],[6,-6],[10,-19],[22,-31],[3,-18],[-1,-11]],[[3306,6034],[4,-11],[-1,-7],[-9,13],[1,11],[5,-6]],[[3288,6120],[2,-14],[-4,-5],[-3,22],[5,-3]],[[3295,6124],[5,-5],[-9,-3],[1,18],[3,-10]],[[5262,7641],[2,-7],[1,-27],[-4,-7],[-2,-24],[-7,-9],[-8,9],[3,8],[-7,3],[2,19],[-5,15],[3,10],[13,13],[6,-1],[3,16],[0,-18]],[[5160,8036],[5,-6],[11,0]],[[5172,7849],[16,7]],[[5195,7827],[-7,-5],[5,-18],[5,-6],[-2,-11],[-13,-6],[3,-11],[8,-5],[1,-9],[-6,-11],[4,-14],[10,-7],[9,3],[-4,-22]],[[5208,7705],[-2,-3]],[[5206,7702],[-2,-1]],[[5204,7701],[-11,-10],[-9,-23],[-14,-6],[-22,9],[0,7],[-15,1],[-7,6],[-11,0],[-5,6],[-13,-17],[-10,-6],[-3,-9],[0,-26],[4,-8]],[[4950,7681],[9,13],[6,48],[-1,11],[4,49],[11,-11],[0,8],[-14,16],[3,6],[1,26],[-20,14],[-9,18],[4,14],[-5,12],[-8,1],[-3,15],[-6,-3],[-11,11],[-18,6],[-4,6],[-11,-5],[0,7],[-9,7],[12,5],[-14,12],[1,13],[10,6],[22,0],[2,9],[12,2],[10,-20],[12,9],[16,-4],[4,8],[-1,28],[-6,8],[0,18],[16,0],[-1,-11],[5,-6],[30,-4],[8,7],[-5,3],[2,11],[10,9],[18,7],[11,15],[0,37],[10,8],[17,4]],[[4800,8771],[13,-21],[-14,13],[1,8]],[[4808,8772],[9,-11],[-11,3],[2,8]],[[9394,5584],[3,-9],[-4,-1],[1,10]],[[5308,4956],[-3,13],[-10,15],[0,9],[-17,28],[-8,19],[7,-8],[5,3],[-8,8],[-7,1],[-2,13],[-9,21],[1,10],[8,2],[-2,7],[-4,-5],[-9,16],[-1,11],[-6,18],[5,6],[2,-7],[2,12],[6,13],[1,14],[-1,27],[2,-7],[11,-2],[-8,7],[-5,19],[9,-6],[-2,24],[3,7],[4,-4]],[[5272,5240],[6,1],[36,-1],[0,68]],[[4964,8107],[6,-6],[-7,-6],[-6,6],[7,6]],[[4883,8252],[-4,-10],[-6,16],[10,-6]],[[4825,8298],[-11,-2],[-8,20],[-10,-17],[-14,5],[-9,13],[11,10],[-5,6],[11,2],[8,19]],[[4798,8354],[20,10],[13,-2],[0,-8],[18,-35],[-7,-6],[-11,-19],[-6,4]],[[4857,8375],[-7,14],[7,-1],[0,-13]],[[4830,8398],[2,-9],[-7,-6],[-6,6],[1,10],[10,-1]],[[4839,8409],[-5,-13],[-4,6],[9,7]],[[4832,8443],[11,-10],[-2,-5],[-18,-4],[7,10],[-7,5],[9,4]],[[4795,8489],[3,-18],[-4,1],[1,17]],[[4800,8503],[1,-8],[-10,7],[9,1]],[[4824,8506],[5,-20],[14,-6],[-9,-6],[-10,1],[-13,15],[11,5],[2,11]],[[4827,8543],[-5,-20],[-16,-15],[3,11],[-7,3],[2,15],[23,15],[0,-9]],[[4907,8560],[9,0],[-6,-20],[-22,-20],[6,-7],[-8,-14],[22,8],[20,-3],[16,2],[7,-13],[-6,-9],[-6,-24],[-9,-18],[-10,-8],[8,-10],[-21,-15],[9,-4],[11,6],[13,-8],[14,-19],[4,-29],[8,-27],[19,-9],[4,-13],[8,-7],[-4,-5],[11,-24],[-7,1],[12,-23],[-7,-19],[8,-7],[5,11],[20,-2],[11,-10],[3,-16],[-5,-24],[-4,0],[-14,-26],[-11,-12],[12,-3],[13,1],[-3,-14],[-11,-13],[-5,1],[-14,-11],[-12,6],[-18,-6],[-3,7],[-18,-7],[-14,-1],[2,-8],[-27,9],[-13,-6],[-2,-17],[-8,-7],[-11,10],[-16,-3],[-12,-21],[-8,10],[19,25],[7,14],[1,12],[6,-1],[2,11],[12,3],[11,-4],[11,2],[8,20],[-23,-9],[-8,12],[-13,-3],[0,6],[-10,3],[-8,-7],[-10,18],[13,6],[20,18],[2,9],[-2,24],[-17,-4],[11,12],[5,11],[27,10],[8,19],[-4,11],[5,2],[-1,14],[-9,-6],[-11,23],[9,26],[-19,-10],[-11,5],[1,-10],[-13,10],[-5,-5],[-1,21],[11,19],[-15,29],[-8,-15],[-4,-23],[-5,-1],[3,22],[-1,18],[5,24],[8,18],[-12,-13],[-5,11],[0,17],[5,10],[-6,19],[7,25],[12,0],[-5,20],[11,21],[20,-6],[26,7]],[[4912,8589],[-2,-13],[-4,10],[6,3]],[[4964,8673],[4,-27],[-15,5],[9,7],[2,15]],[[6206,7550],[-23,27],[-5,-9],[-8,5],[-9,-5],[-8,5]],[[6153,7573],[7,17],[-8,51],[-10,6],[-3,11],[-21,13],[-8,10]],[[6110,7681],[2,9],[16,0],[27,-19],[21,2],[7,-6],[6,1],[10,-14],[17,-9],[-2,-8],[6,-4],[16,12],[7,-8],[4,8],[11,-14],[11,0],[-2,-18],[8,-10],[14,-9]],[[4995,5824],[5,-3],[-3,-26],[10,-13],[3,-27],[-4,-30],[8,0],[-2,-24],[2,-8],[-4,-8],[9,-19],[-3,-11],[0,-28],[-3,-15],[4,-3],[-1,-23],[-3,-2],[6,-28],[8,-9],[5,-13]],[[5032,5534],[-7,-19],[-15,1],[-21,-17],[-12,-16],[-6,0],[-6,-7],[-11,-5],[-10,-15],[-7,8],[-24,12]],[[4913,5477],[8,2]],[[4851,7264],[0,0]],[[4683,5897],[-3,-14],[6,-9],[6,11],[4,0],[8,-17],[4,13],[5,5],[16,-11],[2,7],[14,19],[5,-5],[2,-20],[3,-1],[-1,-21],[13,-17],[-9,-23],[5,5],[6,-3],[0,-28],[9,-12],[0,-8]],[[4764,5618],[-6,8],[-1,-12],[-11,-17],[-5,13],[-4,0],[3,19],[-5,25],[0,11],[-8,10],[-7,-7],[-6,3]],[[4714,5671],[-3,1],[-5,-11],[-3,4],[5,15],[-3,10],[0,15],[-4,1],[2,13],[-15,39],[-19,0],[-17,-7],[-5,-26],[-12,-21],[-5,-1]],[[4630,5703],[4,8],[-12,23],[0,12],[-4,-2],[-6,13],[-20,29],[4,20],[-5,-10],[-3,21],[-4,-14],[-2,11]],[[4582,5814],[8,30],[12,8],[16,4],[0,19],[-6,11],[7,3],[-1,24]],[[4618,5913],[19,-3],[-1,-8],[17,-6],[3,-5],[7,6],[20,0]],[[4534,5935],[-2,17],[4,7],[8,-14],[5,5],[-8,2],[-1,13]],[[4540,5965],[29,0],[4,12],[7,2],[8,-5],[2,-7],[6,1],[4,-10],[12,7],[3,-14],[-15,-6],[-5,7],[-11,6],[-6,7],[-1,-9],[-5,-4],[-12,-1],[0,-11],[-24,1],[-2,-6]],[[4553,5826],[1,-7],[-6,3],[5,4]],[[4582,5814],[-1,9],[-5,-7],[-7,20],[5,15],[8,-2],[-9,7],[-2,-8],[-3,8],[2,11],[8,-1],[-5,6],[-6,-7],[-11,-6],[3,14],[-7,-6],[-6,6],[1,13],[-5,-2],[-7,9]],[[4535,5893],[14,7],[15,-1],[13,14],[41,0]],[[5272,5240],[-3,6],[-10,3],[3,15],[10,28],[0,26]],[[5243,5399],[5,-8],[-8,-24],[-6,4],[0,10],[4,1],[1,11],[4,6]],[[5663,7229],[13,-11],[9,5],[22,-8],[8,3],[-1,-12],[9,6],[7,-7],[-2,-5],[-25,-2],[-16,-4],[0,9],[-10,6],[-24,5],[1,17],[4,5],[5,-7]],[[5756,7245],[-1,-17],[-3,-5],[4,22]],[[5640,7268],[-4,-2],[0,12],[4,-10]],[[5784,7281],[-5,-19],[-8,-12],[-2,13],[5,13],[10,5]],[[5710,7319],[-4,-10],[-2,10],[6,0]],[[5731,7350],[-10,-7],[2,7],[8,0]],[[5748,7357],[-5,-6],[-5,6],[10,0]],[[5576,7363],[5,-7],[-4,-5],[-5,10],[4,2]],[[5690,7366],[3,-13],[-8,16],[5,-3]],[[5571,7398],[6,-23],[-8,2],[-3,14],[5,7]],[[5723,7405],[3,-16],[-4,-9],[-5,25],[6,0]],[[5651,7423],[11,-14],[8,0],[5,-29],[7,0],[0,-10],[-7,1],[-8,23],[-11,0],[-1,9],[-12,17],[-9,-1],[13,12],[4,-8]],[[5733,7446],[6,-17],[-13,0],[4,10],[-10,-4],[-2,8],[13,8],[2,-5]],[[5553,7474],[-2,-18],[-5,18],[7,0]],[[5706,7488],[-2,-14],[-9,3],[0,9],[11,2]],[[5688,7522],[-8,1],[4,10],[4,-11]],[[5586,7536],[18,3],[4,11],[23,3],[5,10]],[[5731,7585],[7,-8],[1,-14],[-8,-6],[0,-15],[-8,-13]],[[5723,7529],[-3,5],[-11,2],[-11,8],[-12,-10],[-8,6],[-9,-12],[-11,1],[4,-19],[-4,-10],[8,-6],[-1,-11],[-9,17],[-8,0],[0,-6],[10,-14],[-9,6],[-2,14],[-12,9],[0,14],[-6,-6],[-3,-28],[8,-15],[2,-11],[5,-6],[7,-17],[-11,9],[-4,-7],[6,-16],[-9,-6],[17,-11],[0,-9],[8,-2],[13,-15],[-2,-5],[2,-25],[-3,-1],[-12,22],[-15,-11],[5,-3],[0,-11],[10,-10],[-11,-8],[-11,16],[0,-8],[7,-21],[3,-20],[0,-17],[-11,22],[-5,-6],[-4,-14],[0,13],[-6,19],[-6,-1],[0,-14],[-7,3],[-3,13],[3,14],[-3,15],[-13,17],[7,16],[7,2],[6,9],[19,-10],[10,-12],[9,10],[-5,6],[-17,14],[-1,-6],[-12,4],[-12,-7],[-4,8],[-8,-4],[-5,24],[-4,-1],[-1,16],[-13,20],[-2,14],[-5,4]],[[5583,7526],[0,0]],[[5582,7531],[4,5]],[[3288,5876],[-5,-2],[5,13],[0,-11]],[[3786,8632],[-12,-4],[4,9],[8,-5]],[[3787,8645],[3,-11],[-11,4],[-4,10],[12,-3]],[[3846,8835],[12,-11],[-9,0],[-12,15],[9,-4]],[[3579,8886],[3,14],[6,-4],[-9,-10]],[[3876,8910],[-1,-14],[-10,26],[11,-12]],[[3961,8973],[2,-9],[-18,-2],[0,10],[16,1]],[[3583,9209],[9,-5],[-9,-16],[-11,9],[11,12]],[[3535,9210],[20,-7],[5,-10],[-9,-9],[-40,-14],[-19,9],[8,9],[-21,2],[3,11],[-6,23],[14,9],[30,-7],[15,-16]],[[4292,9258],[5,-6],[-22,-8],[-56,-5],[5,12],[24,14],[11,0],[27,11],[6,-18]],[[3513,9274],[-13,6],[9,10],[4,-16]],[[3537,9281],[-14,10],[21,1],[-7,-11]],[[3472,9375],[-13,-11],[-4,9],[17,2]],[[4335,9380],[22,-3],[33,-25],[-20,4],[17,-11],[-5,-9],[-50,20],[-10,8],[0,15],[13,1]],[[4354,9391],[36,-8],[-3,-13],[-17,-1],[-14,11],[-38,1],[0,5],[36,5]],[[4333,9407],[21,-8],[-47,6],[55,-12],[-48,-4],[-29,9],[13,12],[35,-3]],[[4418,9469],[11,-1],[11,-14],[-32,-5],[-18,7],[3,8],[25,5]],[[4439,9496],[13,-2],[-12,-10],[-14,7],[13,5]],[[4505,9520],[-7,-8],[21,-2],[-15,-6],[-30,-2],[2,17],[29,1]],[[4481,9596],[3,-41],[-16,34],[13,7]],[[2994,9643],[23,-5],[-21,-3],[-2,8]],[[4445,9674],[18,-11],[-32,9],[14,2]],[[4519,9788],[-33,-16],[-26,9],[49,14],[10,-7]],[[3575,9904],[-53,7],[4,13],[49,-20]],[[3722,9942],[44,-15],[-28,-11],[-44,11],[-20,15],[48,0]],[[3880,9983],[38,-14],[-47,9],[9,5]],[[4105,9998],[43,-1],[139,-17],[-12,-6],[-116,-3],[-142,-14],[100,5],[47,8],[96,-4],[39,6],[2,-18],[34,4],[72,-17],[-31,-17],[-54,-4],[-152,-7],[-81,-17],[1,-9],[30,8],[107,13],[89,-4],[-3,-12],[-44,-9],[-2,-11],[85,20],[2,14],[51,4],[11,-19],[-7,-14],[-56,-36],[-16,-18],[53,26],[58,30],[75,-8],[37,24],[53,-1],[57,-12],[13,-8],[-64,-27],[-24,0],[7,-12],[-31,-8],[-46,1],[36,-15],[-18,-11],[-40,-3],[-44,6],[-25,-22],[11,-12],[20,3],[-9,-21],[17,-12],[-27,-8],[0,-11],[-28,-2],[-11,-42],[-18,-22],[18,0],[10,17],[51,-16],[-6,-10],[-19,10],[-22,-2],[38,-26],[10,6],[21,-5],[2,-18],[-10,-12],[-35,13],[-27,-3],[-24,-13],[-13,12],[-14,-8],[10,-12],[18,1],[0,-16],[19,4],[30,-4],[6,-11],[-15,-4],[21,-14],[3,-29],[-17,-4],[-4,9],[-16,-2],[-26,17],[8,-12],[24,-14],[-8,-27],[30,-5],[7,6],[13,-11],[-18,-15],[-16,2],[-7,11],[-36,-2],[-11,-18],[9,-27],[-2,21],[9,3],[36,-10],[-7,-26],[-28,3],[-18,-14],[-36,11],[-14,9],[-1,13],[-10,-16],[-25,-4],[-17,-16],[24,-7],[-16,-14],[22,-6],[6,-12],[-19,-7],[21,1],[23,-15],[33,-16],[-17,-14],[20,9],[14,-3],[-17,-11],[2,-17],[9,14],[10,-1],[0,-35],[8,-18],[-13,-10],[-11,3],[-7,22],[-2,-22],[-19,0],[-16,10],[-9,27],[-24,13],[-15,14],[-20,5],[-16,-3],[-26,23],[-16,-2],[31,-13],[-8,-6],[26,-8],[25,1],[11,-12],[-16,-13],[-24,-7],[-44,2],[14,-7],[-11,-17],[2,-11],[40,7],[13,-6],[-17,-3],[-27,-14],[-16,-3],[34,-3],[11,16],[15,-4],[29,13],[23,-11],[25,-7],[33,0],[0,-8],[-14,0],[-4,-12],[-19,-2],[1,-10],[-13,-8],[-17,-1],[2,-9],[-26,-21],[-31,-10],[-13,-9],[-23,1],[1,-6],[-24,-7],[-9,4],[-5,-11],[-18,10],[-1,-16],[-30,-3],[-30,17],[6,-17],[-4,-12],[-11,1],[-16,-12],[-12,-33],[-13,-5],[-1,-15],[-27,-26],[-15,-2],[-14,-18],[-13,3],[-20,-12],[-17,14],[15,16],[-12,0],[-7,-21],[-14,-1],[8,-16],[-17,1],[-7,-6],[-8,9],[-14,-12],[2,-15],[-14,-14],[-10,8],[-13,-3],[1,-12],[14,-11],[-1,-13],[-13,-9],[-12,1],[3,-8],[18,-1],[7,-27],[-13,0],[6,-7],[-18,-12],[-13,6],[12,-15],[-4,-15],[-21,-8],[-6,-11],[9,-15],[-21,9],[12,-11],[9,-1],[-8,-21],[11,5],[-6,-22],[-8,-6],[7,-7],[-17,-13],[9,-6],[-3,-17],[-20,3],[20,-7],[-12,-15],[-11,5],[14,-18],[0,-9],[-29,6],[-13,-12],[-12,10],[3,19],[-9,0],[6,10],[-15,-11],[-11,20],[6,8],[-3,10],[-10,-9],[-22,-8],[3,7],[-19,-8],[-17,0],[14,12],[-20,6],[-4,9],[7,5],[-20,5],[-1,9],[-10,13],[8,10],[-10,16],[-15,2],[-8,9],[5,28],[-12,7],[15,8],[-28,-3],[-2,19],[-11,10],[3,23],[-6,8],[14,-1],[13,13],[6,16],[9,-13],[-4,16],[-11,4],[-15,-12],[2,10],[-19,-33],[-9,0],[1,29],[22,16],[-10,2],[-8,-13],[-23,50],[-12,0],[-4,23],[19,15],[18,9],[21,21],[-21,-13],[-3,-7],[-33,-23],[-9,1],[1,22],[11,11],[16,-1],[5,10],[-34,3],[-6,14],[49,13],[17,-3],[12,6],[-28,-2],[-28,-7],[-21,-2],[2,10],[25,18],[15,2],[12,-7],[24,4],[-49,5],[-24,-17],[0,18],[22,10],[-5,12],[15,-1],[16,-8],[21,2],[-6,8],[7,12],[-13,0],[9,-8],[-31,-6],[-3,7],[-15,-1],[13,14],[18,4],[23,-2],[-5,11],[7,22],[16,-8],[0,19],[-17,-7],[10,18],[-2,11],[15,4],[-8,11],[-24,0],[-25,5],[-25,17],[-22,4],[-15,18],[11,6],[48,-8],[25,-15],[24,-6],[5,11],[-14,-6],[1,16],[-24,21],[17,-6],[-5,9],[-22,-1],[16,9],[-4,6],[-19,-12],[5,13],[24,4],[-8,4],[-21,-8],[-7,9],[25,4],[-41,6],[-4,7],[-14,-11],[0,-11],[-14,-5],[-24,1],[-17,17],[17,13],[-8,8],[19,13],[-21,11],[17,5],[10,12],[-3,15],[-18,4],[4,18],[-30,38],[7,13],[-16,5],[7,11],[-21,13],[4,8],[-31,10],[-14,17],[13,3],[-7,17],[-16,-2],[-4,10],[-26,9],[-17,-2],[-4,9],[-42,5],[-31,8],[-6,-11],[-27,5],[1,-9],[-35,-1],[7,10],[-15,1],[-6,-12],[-18,11],[-7,-6],[23,-12],[-58,9],[-30,15],[36,17],[-57,7],[-26,11],[12,12],[50,5],[21,6],[50,-3],[14,9],[-19,13],[-24,-11],[-45,-4],[-29,6],[21,8],[-33,-1],[13,9],[-30,-4],[-44,23],[8,21],[91,16],[8,10],[43,9],[42,-2],[31,23],[-5,30],[-56,2],[-12,15],[39,20],[28,7],[8,12],[46,13],[44,-9],[16,6],[6,19],[-19,15],[104,24],[90,11],[24,-14],[-6,-33],[24,17],[-1,11],[85,-18],[-31,13],[44,0],[-31,12],[-15,20],[65,-8],[77,-19],[22,-14],[25,1],[-8,28],[38,-1],[-68,26],[132,2],[-157,7],[28,14],[74,4],[6,5],[54,-17],[95,1],[-42,3],[53,5],[-49,3],[0,13],[180,11]],[[2530,6098],[8,-8],[4,5],[7,-7]],[[2549,6088],[-17,-28],[-9,-9],[-2,-15],[2,-14],[-6,-9]],[[2517,6013],[-6,-1],[2,-10],[-5,-3],[-10,-17],[-1,-9]],[[2497,5973],[-15,12],[-19,1],[-9,9],[-17,25]],[[2437,6020],[3,7],[-1,33],[1,10],[11,38],[36,0],[2,20],[-7,4],[-4,17],[-8,7],[-1,7],[-9,13],[12,0],[1,33],[50,0]],[[9022,5957],[-2,-11],[-3,10],[5,12],[4,-3],[-4,-8]],[[3409,5499],[-2,-9],[4,-10],[-2,-8],[-13,-2],[-5,-8],[2,-9],[-6,-39],[4,-7],[2,-13],[5,-8],[0,-8],[10,0],[2,-28],[6,-15],[0,-8],[9,-27],[6,-5]],[[3312,5482],[-18,43],[8,14],[-2,28],[9,7],[5,-2],[11,21],[-7,0],[-5,21],[5,19],[5,3],[15,22],[-6,18]],[[3332,5676],[4,-9],[7,-3],[15,-20],[17,-36],[1,-15],[-4,-18],[1,-10],[3,13],[4,2],[10,-8],[9,-18],[2,-9],[6,-1],[5,-11],[0,-27],[-3,-7]],[[8172,6482],[5,-7],[-5,-9],[-9,5],[5,9]],[[7037,2130],[10,-6],[-7,-4],[-3,10]],[[2691,6046],[-12,-1],[-4,-8],[-12,-4],[-8,-7],[-8,2],[-3,9],[-6,-6],[-4,-11],[0,-12],[-5,-3],[-5,-13],[-6,-5],[0,-7],[-8,9],[-8,-14],[-13,-2],[2,-26],[-6,-2],[0,-10],[-11,-5]],[[2574,5930],[-4,22],[-10,3]],[[2560,5955],[3,17],[-2,12],[-6,-1],[-3,6],[-10,-8],[0,7],[-7,3],[-8,17],[-10,5]],[[2549,6088],[8,9],[7,2],[7,-7],[2,4],[12,-6],[4,3],[12,-1],[13,11],[15,-6],[11,6],[18,-9],[13,-22],[-8,6],[10,-19],[8,0],[-7,9],[9,-6],[4,-13],[4,-3]],[[5512,7634],[1,-9]],[[5513,7625],[-8,12],[-27,21],[12,-5]],[[5466,7679],[-8,-5],[-2,8],[10,-3]],[[5412,7751],[11,-14],[-10,8],[-1,6]],[[5401,7772],[0,-20],[-5,27],[5,-7]],[[5404,7789],[3,-10],[-5,-3],[2,13]],[[5458,7861],[5,-3],[18,-29],[6,0],[9,-10],[17,0],[11,9]],[[5524,7828],[3,-33],[12,-10],[-10,-3],[-1,-17]],[[5488,7656],[-12,12],[-6,13],[-14,10],[-11,-4],[-2,10],[-14,14],[-9,17],[8,5],[-15,23],[-1,23],[-9,12],[-7,2],[-3,-20],[-8,-11],[-8,20],[0,20]],[[5377,7802],[9,-3],[13,3],[6,6],[20,-9],[-2,17],[12,6],[-2,20],[9,5],[8,12],[8,2]],[[3002,6248],[-1,2]],[[2977,6260],[-12,8],[1,7],[11,-10],[0,-5]],[[3000,6254],[2,-6]],[[3006,6222],[-8,11],[-24,-5],[-11,6],[-8,0],[-6,-5],[1,-8],[-12,16],[-7,4],[2,15],[6,2],[16,-10],[24,-4],[4,8],[7,-2],[0,7],[-13,23],[1,19],[3,2],[-9,11],[-11,1],[-2,6],[8,10],[11,2],[13,-11],[15,-2]],[[5614,7970],[21,-26]],[[5635,7944],[-8,-11],[-4,2],[-13,-17],[-4,-19],[-5,-6],[-4,-21],[-6,-5],[-1,-12],[-6,-10],[-7,2],[-5,-8],[-10,-1]],[[5562,7838],[-16,4],[-11,-11],[-11,-3]],[[5458,7861],[-7,21],[-4,-1]],[[5476,7947],[6,-1],[10,-13],[15,0],[14,3],[-1,10],[7,4],[14,3],[4,7],[8,-7],[12,11],[3,13],[9,3],[9,-5],[11,3],[5,-11],[12,3]],[[8426,4574],[2,-3],[-6,-11],[-11,-6],[0,8],[6,3],[10,17],[-1,-8]],[[8386,4582],[-1,-10],[-6,2],[7,8]],[[8333,4644],[9,-18],[4,2],[10,-24],[-10,-15],[-9,5],[-5,14],[-10,12],[-15,3],[-4,11],[10,10],[20,0]],[[8473,4637],[-2,-11],[-16,-29],[-8,0],[-2,-6],[-12,-5],[-3,9],[7,6],[-5,10],[2,16],[10,18]],[[8444,4645],[2,-5],[7,4],[3,10]],[[8456,4654],[13,13]],[[8469,4667],[7,-5],[0,-8],[-6,-2],[3,-15]],[[8318,4695],[-3,-16],[1,18],[2,-2]],[[8424,4708],[1,-8],[-8,-2],[4,11],[3,-1]],[[8242,4700],[-7,-24],[3,-4],[-11,-3],[-10,6],[6,6],[-1,15],[7,13],[8,-1],[5,-8]],[[8442,4708],[-5,-4],[-10,-16],[-5,4],[7,9],[-2,6],[12,4],[3,-3]],[[8450,4700],[-5,-10],[-4,6],[11,16],[-2,-12]],[[8858,4702],[-10,-1],[7,12],[3,-11]],[[8265,4700],[-2,12],[5,2],[-3,-14]],[[8459,4715],[2,-3],[13,1],[1,-11],[-22,-6],[3,18],[3,1]],[[8550,4716],[8,-3],[-2,-6],[-6,9]],[[8276,4716],[4,0],[5,-15],[6,7],[6,-6],[8,2],[1,-19],[-18,-12],[0,10],[-7,-11],[-12,-2],[-9,-9],[-7,-2],[-11,5],[2,11],[-1,13],[12,14],[6,-8],[4,5],[6,-18],[14,4],[-6,11],[-4,1],[-6,16],[7,3]],[[8415,4713],[2,-8],[-7,-8],[2,-8],[-13,-10],[-8,1],[-9,-9],[-11,5],[-1,-7],[-12,0],[-2,6],[-7,2],[-9,-3],[-13,4],[0,11],[13,18],[19,-4],[15,-16],[15,11],[6,-12],[6,1],[0,7],[12,12],[-4,4],[3,8],[3,-5]],[[8208,4712],[5,-15],[-14,-15],[-7,13],[-11,8],[-3,14],[12,-6],[8,8],[10,-7]],[[8604,4733],[0,-14],[-5,14],[5,0]],[[8519,4741],[-6,-15],[-15,2],[-5,-7],[5,21],[11,-2],[8,7],[2,-6]],[[8857,4720],[-12,-20],[-23,0],[5,24],[6,21],[6,8],[11,6],[5,-1],[7,-11],[-5,-27]],[[8656,4770],[0,-26],[-8,-16],[-7,-6],[3,28],[10,23],[2,-3]],[[8664,4774],[1,-9],[-7,7],[6,2]],[[8166,4787],[3,-6],[-12,-8],[-3,-6],[-12,-1],[-12,5],[4,15],[32,1]],[[8204,4789],[6,-5],[-10,-1],[4,6]],[[8738,4813],[-1,-5],[-6,7],[3,6],[4,-8]],[[8733,4812],[3,-8],[-6,-16],[-7,2],[2,30],[-1,7],[9,-15]],[[7948,4837],[3,4],[13,-9],[8,1],[0,9],[9,-3],[2,-10],[7,-5],[6,2],[5,-8],[8,5],[5,-14],[2,-16],[11,-1],[10,-5],[4,4],[11,-7],[7,4],[5,-7],[7,8],[2,19],[4,5],[7,-1],[3,-15],[12,3],[12,-14],[16,1],[0,-13],[6,-8],[-2,-17],[16,-15],[12,4],[7,6],[13,-11],[-3,-41],[7,-10],[-18,4],[-20,20],[-6,-1],[-10,-8],[-9,6],[-16,4],[-2,-6],[-9,6],[-11,0],[-13,8],[-14,14],[-18,10],[-23,1],[-2,-7],[-18,4],[-11,14],[-25,5],[-4,10],[4,15],[-7,-1],[-7,10],[-20,-2],[3,10],[2,-8],[4,17],[5,1],[1,18],[5,17],[4,-6]],[[8346,4810],[-1,39],[3,-8],[-2,-31]],[[8685,4859],[3,-16],[-4,0],[1,16]],[[8737,4870],[5,-12],[1,-27],[-5,-14],[-8,8],[-1,9],[2,19],[6,17]],[[7843,4868],[-9,8],[9,-3],[0,-5]],[[8386,4889],[2,1],[2,-20],[-3,-2],[-4,10],[3,11]],[[8410,4898],[-4,-6],[0,-18],[-10,-1],[3,23],[-2,8],[11,13],[2,-19]],[[8422,4913],[0,-9],[-5,6],[-2,-24],[7,-6],[-2,-7],[-8,-5],[0,-10],[-6,-1],[-2,9],[5,17],[3,22],[0,15],[4,10],[6,-17]],[[8418,4952],[5,-5],[-3,-8],[-5,6],[3,7]],[[8564,4977],[-2,-8],[-9,-3],[3,10],[8,1]],[[8225,4951],[-3,23],[3,18],[4,5],[1,-36],[-5,-10]],[[8523,5004],[7,-6],[-2,-7],[6,-2],[0,-14],[-15,-15],[-15,15],[-5,14],[1,12],[11,5],[12,-2]],[[8598,5023],[14,-13],[8,1],[7,-8],[1,-15],[7,-11],[-1,-17],[-24,23],[-3,8],[-9,2],[-2,-10],[-15,7],[-2,8],[-6,-10],[-7,-2],[-6,20],[-4,-17],[-6,11],[8,6],[1,12],[21,0],[5,-5],[13,10]],[[7789,5006],[0,-13],[-7,21],[0,8],[6,-7],[1,-9]],[[7994,5036],[13,-12],[-2,-21],[-6,-7],[-3,11],[-8,-10],[0,26],[2,12],[4,1]],[[7782,5024],[-5,-4],[0,20],[5,-16]],[[7769,5060],[4,-12],[-4,1],[-5,11],[5,0]],[[8501,5041],[-3,3],[-3,21],[4,3],[2,-27]],[[8483,5079],[15,1],[11,-2],[-2,-3],[-24,-4],[0,8]],[[8620,5085],[2,-15],[-6,-6],[-14,10],[10,9],[8,2]],[[8458,5089],[22,-6],[0,-9],[-8,-3],[-7,2],[-10,-6],[-1,20],[4,2]],[[8762,5091],[20,-3],[6,-5],[14,-4],[-11,-5],[-15,5],[-14,12]],[[7940,5097],[5,-5],[4,-17],[0,-18],[4,-16],[14,-6],[-5,-8],[-2,-12],[4,-10],[-22,15],[0,21],[-3,4],[-1,14],[-18,4],[0,8],[7,9],[-3,5],[9,9],[2,-13],[3,1],[-2,12],[4,3]],[[8550,5100],[9,-9],[-6,-5],[-11,-3],[-5,6],[1,9],[6,8],[6,-6]],[[8421,5116],[1,-14],[3,9],[6,-1],[0,-10],[-4,-5],[-3,6],[-1,-12],[-3,18],[-6,-15],[-4,10],[3,13],[8,1]],[[8044,5127],[4,-10],[-9,-8],[0,18],[5,0]],[[7746,5129],[7,-31],[4,-7],[-2,-11],[-9,6],[-9,29],[3,13],[6,1]],[[8636,5129],[4,-8],[-2,-16],[-7,6],[-3,15],[8,3]],[[8634,5139],[-7,-9],[-4,6],[11,3]],[[8761,5145],[12,-2],[9,-20],[6,-4],[-7,-7],[-7,2],[-4,22],[-3,-4],[-6,13]],[[8536,5138],[-5,0],[3,9],[2,-9]],[[8915,5033],[0,-218],[-3,-12],[3,-17],[0,-128]],[[8915,4658],[-10,18],[-4,12],[-15,28],[-17,-5],[-3,6],[-7,-8],[-1,19],[5,19],[-4,4],[-7,18],[13,-3],[-12,8],[-4,13],[10,2],[-8,7],[1,5],[-7,13],[-3,32],[-8,7],[0,12],[-4,8],[-15,20],[-21,12],[-18,18],[-14,4],[-7,-1],[-16,20],[1,11],[-4,-6],[-5,9],[-1,-9],[-5,7],[1,8],[-6,-4],[-4,14],[-3,-5],[0,28],[6,6],[-1,9],[-6,-11],[0,-14],[-7,-21],[1,-8],[-5,-11],[-7,-3],[-6,11],[-2,14],[6,8],[-9,15],[-3,12],[-6,8],[-6,-2],[-2,12],[5,5],[10,-2],[4,-6],[9,18],[7,5],[7,-10],[8,7],[4,12],[-1,9],[-7,-8],[-11,2],[-16,-6],[-4,7],[-6,-5],[-8,11],[-4,22],[-5,11],[-9,2],[-5,-3],[-7,4],[3,13],[5,6],[0,18],[7,5],[8,0],[10,17],[8,5],[8,-1],[12,-10],[6,-11],[17,0],[5,-8],[-4,-5],[7,-22],[-1,-12],[-4,-7],[2,-39],[5,-10],[3,-17],[1,17],[5,-3],[1,-23],[5,-17],[6,-6],[11,0],[2,7],[10,16],[1,11],[9,14],[3,18],[9,-2],[14,10],[-3,16],[19,18],[4,0],[11,-13],[9,-4],[5,-10],[7,-3],[20,-21],[10,3],[16,-10],[-2,-6],[8,0]],[[7903,5160],[0,-12],[-8,7],[6,9],[2,-4]],[[8544,5159],[1,-17],[6,0],[-1,-9],[-5,6],[-5,-3],[0,10],[-5,11],[6,9],[3,-7]],[[8533,5168],[1,-14],[-4,-1],[0,14],[3,1]],[[7735,5153],[-4,0],[3,16],[1,-16]],[[7881,5163],[-8,-1],[3,8],[5,-7]],[[8633,5183],[14,-10],[-2,-13],[-6,2],[-11,13],[8,-16],[-6,-1],[-1,8],[-9,2],[-2,9],[15,6]],[[7737,5167],[-5,8],[0,8],[5,-16]],[[7904,5183],[11,-16],[-7,4],[-8,-1],[4,13]],[[7850,5240],[4,0],[7,-11],[-14,-1],[-1,20],[4,-8]],[[7861,5243],[2,-12],[-8,11],[-5,-1],[5,9],[6,-7]],[[7892,5248],[-1,-8],[-5,3],[6,5]],[[7904,5252],[2,-10],[-2,-11],[-3,13],[-6,-3],[2,9],[7,2]],[[7845,5238],[-6,7],[-1,17],[3,2],[5,-9],[-1,-17]],[[7704,5270],[3,-2],[6,-18],[6,-7],[-2,-28],[-4,1],[-3,14],[-5,7],[-8,26],[7,7]],[[7839,5273],[7,-4],[0,-13],[-10,11],[-2,10],[5,-4]],[[8473,5279],[5,-11],[-3,-3],[-6,-26],[-5,-5],[-7,-25],[-24,-11],[-11,3],[-4,10],[-24,0],[-12,-4],[-6,6],[-13,-7],[-11,7],[-10,-4],[-7,-19],[-3,-19],[3,-26],[4,-13],[5,-1],[5,-12],[2,-17],[13,1],[2,12],[8,18],[5,-3],[13,0],[1,9],[15,-2],[7,4],[-7,4],[10,6],[9,-5],[0,-20],[-3,-4],[-4,11],[-9,-3],[-8,-23],[-9,-17],[-12,-6],[-3,-12],[-10,8],[0,-8],[8,-15],[5,-3],[11,-32],[7,-26],[-5,-8],[-1,-14],[13,-17],[-1,-9],[7,-3],[0,-15],[-4,-6],[-4,6],[-14,-7],[-2,-7],[2,-12],[-12,1],[-5,9],[1,25],[3,8],[-8,7],[-13,25],[0,9],[5,10],[1,26],[-8,8],[-17,-20],[6,-16],[0,-25],[-2,-12],[1,-36],[2,-7],[-4,-14],[-1,-14],[5,-24],[-15,-2],[-4,-8],[-11,16],[0,14],[3,7],[0,18],[4,19],[0,23],[-5,19],[2,12],[-6,3],[-10,-8],[-3,14],[2,27],[-4,0],[1,13],[3,-1],[7,11],[-1,15],[3,13],[4,2],[-2,14],[0,26],[5,11],[1,11],[7,11],[1,50],[3,16],[4,4],[-1,10],[9,8],[7,-3],[6,14],[0,15],[3,3],[10,-7],[5,3],[0,-9],[5,-4],[8,2],[8,-5],[7,1],[10,-12],[4,8],[19,-6],[8,1],[10,8],[9,23],[10,19],[2,-4]],[[7825,5301],[0,-16],[-7,-2],[-2,18],[9,0]],[[8556,5309],[-6,-20],[5,-6],[0,-25],[-11,-20],[3,-8],[6,3],[0,8],[7,8],[-3,5],[3,9],[11,11],[4,-1],[-1,-29],[-11,-9],[0,-14],[11,-6],[0,-13],[-20,8],[-3,-10],[1,-20],[5,-25],[10,-24],[-11,11],[-5,20],[-5,6],[1,34],[-4,4],[-2,38],[-3,10],[4,12],[0,12],[4,16],[10,15]],[[8571,5333],[3,-7],[-3,-21],[-8,-7],[-3,16],[5,13],[6,6]],[[7663,5350],[2,-7],[14,-20],[-5,0],[-14,13],[-4,9],[7,5]],[[8268,5370],[-4,6],[4,4],[0,-10]],[[8489,5385],[-4,-3],[0,16],[4,-13]],[[8269,5423],[5,-1]],[[8274,5422],[-2,-7],[-3,8]],[[8008,5418],[2,-16],[-2,-7],[-8,11],[-1,9],[7,11],[2,-8]],[[8265,5422],[-5,1],[11,-21],[-1,-10],[-15,-1],[7,-13],[-5,-10],[11,-13],[-4,-4],[16,-37],[-8,-15],[1,-8],[7,-13],[9,-10],[10,-16],[6,-14],[-7,-9],[-16,4],[-8,12],[4,-17],[-6,2],[-6,-18],[-4,-26],[2,-2],[-3,-17],[1,-14],[4,4],[-3,-14],[4,-4],[-9,-8],[-1,5],[-7,-22],[-14,-16],[1,-8],[-9,-10],[6,1],[-2,-24],[6,0],[-2,-19],[-4,-2],[0,-18],[-5,-7],[-6,-36],[-38,-32],[0,28],[-14,23],[-6,-9],[-9,3],[0,12],[-6,-6],[-9,20],[-3,-10],[3,-3],[-14,-16],[-9,6],[-7,-11],[-4,-1],[1,27],[-4,17],[0,-10],[-4,-4],[-7,5],[-9,-9],[-7,6],[-2,-5],[-3,12],[-7,-8],[-6,62],[-5,8],[3,3],[2,20],[-4,16],[-7,11],[-7,4],[-2,-4],[-7,21],[0,34],[5,-2],[-5,14],[-5,4],[0,20],[3,50],[7,9],[1,14],[9,9]],[[8045,5303],[-3,-16],[3,-12],[17,-35],[7,-8],[8,3],[2,6],[10,4],[7,-6],[9,2],[8,7],[2,18],[8,7],[15,0],[-2,-8],[9,-3],[11,-8],[7,12],[16,-1],[5,12],[1,13],[3,2],[-1,20],[12,14],[-4,12],[1,10],[5,10],[6,-1],[4,65],[5,11],[6,-4],[3,5],[7,-4],[10,4],[13,0],[10,-12]],[[8523,5442],[2,-13],[-3,-14],[-4,-2],[2,32],[3,-3]],[[7652,5506],[11,-6],[4,-11],[10,-6],[12,4],[10,-8],[9,6],[11,-21],[3,-16],[6,-9],[0,-16],[13,-17],[3,-9],[6,-5],[20,-26],[7,-15],[-1,-13],[3,-5],[3,6],[6,-23],[14,-21],[-2,19],[6,1],[8,-16],[1,-14],[10,-6],[12,-18],[1,-19],[7,-15],[13,-3],[5,-14],[-13,-13],[8,1],[12,15],[11,-13],[2,-18],[-7,0],[-6,-21],[7,-4],[-5,-5],[1,-12],[4,-12],[9,-1],[7,-6],[6,2],[2,-16],[1,-28],[4,-14],[7,-5],[-1,-9],[8,-5],[13,-1],[0,-13],[5,-6],[0,-10],[6,-4],[2,-14],[-6,-14],[-1,-15],[3,-5],[-4,-25],[2,-13],[0,-26],[-2,-53],[-7,2],[-7,19],[-3,-6],[0,-12],[-8,6],[-9,11],[-1,-4],[5,-19],[-4,-3],[-3,11],[-10,17],[-5,19],[-7,10],[-11,12],[-28,46],[-1,17],[-17,23],[-8,29],[-9,16],[-5,17],[2,7],[-9,34],[0,8],[-5,3],[1,11],[-9,30],[-9,14],[0,13],[-4,9],[-9,10],[-5,1],[-1,21],[-9,45],[0,20],[-3,0],[-7,14],[-5,2],[-9,14],[-7,6],[-2,27],[-5,5],[-4,14],[-3,5],[-8,23],[-11,6],[-8,21],[-6,5],[-13,28],[-5,27],[-3,6],[0,17],[8,2]],[[4872,8298],[-4,5],[8,13],[4,-7],[-8,-11]],[[7606,5598],[2,-16],[-2,-11],[-5,16],[0,9],[5,2]],[[7571,5804],[0,-12],[-5,0],[-1,12],[6,0]],[[7583,5964],[1,-29],[-3,1],[1,-36],[-3,-2],[1,-13],[-5,-6],[2,-9],[-2,-25],[-5,13],[5,34],[0,29],[2,1],[0,26],[6,16]],[[7448,6428],[-4,1],[4,13],[0,-14]],[[7248,6922],[-16,-24],[0,-12],[-5,-9],[1,-17],[-7,-14],[9,-14],[9,-1],[7,-10],[9,-6],[2,-11],[15,-17],[6,3],[11,-14],[7,2],[1,-11],[12,-4],[18,0],[8,4],[6,-8],[8,-2],[1,-18],[8,-3],[10,-14],[9,7],[7,-16],[4,5],[9,-3],[11,-11],[7,7],[9,-11],[13,6],[7,-5],[4,17],[0,13],[-6,11],[2,24],[3,21]],[[7703,6808],[0,-19],[-13,-15],[0,-11],[7,-21],[-7,6],[-4,10],[-21,-9],[-2,-10],[-14,-19],[-9,-5],[-2,-21],[4,-12],[-4,-6],[0,-10],[-10,-18],[-2,-16],[3,-3],[-2,-22],[-3,-2],[-6,-22],[-5,-27],[-11,9],[-11,-2],[4,-18],[-2,-30],[-9,-21],[2,-34],[-3,1],[-1,-12],[-8,9],[-3,-10]],[[7473,6457],[-4,-11],[5,-18],[-6,2],[-4,-6],[-2,22],[-5,-3],[-1,-16],[-7,0],[-1,26],[-8,-18],[-21,-14],[-8,-19],[6,-28],[-7,-10],[-4,-16],[-4,-3],[-6,-16],[-19,-10],[-5,9],[-5,-13],[5,1],[-15,-26],[-9,-26],[-13,-29],[-9,-8],[-6,-10],[-9,-22],[-21,-21],[-6,-16],[3,-5],[-1,-14],[-6,-9],[-11,-8],[-10,4],[-4,-3],[-1,-20],[-10,-15],[-1,10],[-6,-1],[-9,-10],[-3,-17],[-2,-18],[3,-24],[-1,-30],[3,-29],[-5,-4],[7,-9],[0,-14],[-3,-37],[-8,-24],[-4,-26],[2,-16],[0,-46],[1,-17],[-15,0],[-2,-15],[-8,-21],[-2,-13],[5,-9],[-20,-12],[-5,-12],[-2,-22],[-2,-8],[-16,-16],[-7,6],[-11,22],[-7,19],[-6,25],[-3,32],[4,-10],[0,11],[-6,7],[-2,18],[-6,30],[-1,14],[-9,36],[-9,17],[-6,25],[-6,34],[-2,33],[-8,39],[-1,14],[-7,14],[-2,12],[-4,5],[0,15],[-3,4],[-4,24],[-4,8],[-5,29],[-1,37],[-5,30],[-6,45],[1,7],[-3,22],[-1,23],[-3,24],[2,33],[4,12],[-2,36],[-3,-4],[-3,11],[2,16],[12,11],[-16,-3],[2,14],[-2,14],[9,5],[-13,4],[-2,-15],[-8,-7],[8,-18],[-6,-25],[-17,-17],[-14,-11],[-5,0],[-10,9],[-11,17],[-15,33],[-15,29],[0,10],[7,1],[0,-9],[14,12],[3,-3],[9,7],[7,23],[-10,-1],[-9,-10],[-13,5],[-11,10],[-9,15],[-4,19],[-6,14]],[[6893,6556],[5,7],[10,0],[0,19],[13,-3],[11,2],[5,-7],[6,0],[3,8],[13,7],[0,-8],[6,-3],[9,10],[-4,12],[3,3],[-5,27],[-6,14],[0,17],[-10,1],[-6,14],[2,35],[-9,2],[-10,11],[1,17],[10,20],[6,22],[7,12],[6,1],[4,-16],[4,-2],[9,7],[20,8],[0,9],[8,16],[5,21],[16,16],[9,29],[3,22],[12,8],[4,7],[-2,10],[6,11],[6,19],[10,12],[-4,2],[3,17],[-2,24],[7,10],[14,8],[1,10],[-8,8],[-11,2],[0,14],[-9,2],[0,13],[-9,10],[4,22],[-5,5],[1,10],[7,10],[-9,1],[1,16],[-5,3],[4,19],[13,6],[7,-5],[16,-2],[11,-9],[11,11],[17,3],[3,10],[5,1],[4,11]],[[7140,7205],[20,22]],[[4825,8298],[2,-37],[6,-29],[-6,-16],[-4,-28],[-10,1],[-8,-4],[-12,0],[-5,-10],[-7,0],[-4,-8],[-7,-1],[-12,-14],[-20,0],[-11,-8],[10,14],[-20,-4],[12,13],[-11,-6],[-7,10],[13,14],[-15,-2],[5,10],[13,-2],[-1,11],[8,12],[-10,-5],[12,12],[5,21],[10,8],[-16,-2],[-14,9],[-3,9],[6,13],[0,24],[-5,4],[22,4],[23,-3],[-5,4],[12,9],[3,8],[-15,-1],[-2,7],[10,6],[2,18],[15,2],[6,-6],[4,17],[13,-9],[-9,-9]],[[6560,6732],[-4,-9],[-5,0],[-16,-12],[0,7],[13,7],[13,13],[-1,-6]],[[6357,7396],[3,-38],[4,-9],[9,-7],[13,-2],[9,-5],[2,-13],[21,-24],[23,-9],[43,18],[16,-4],[-3,30]],[[6497,7333],[8,-1],[16,11],[1,13],[9,13],[9,7],[24,0],[3,10],[17,-4],[5,4],[3,-17],[23,-10],[8,-9],[10,3],[11,-10],[10,-21],[13,-7],[8,-22],[23,0],[2,-31],[-3,-8],[4,-5],[0,-15]],[[6689,6902],[14,-27],[0,-8],[6,-21],[10,-20],[14,-8],[5,-10],[5,-1],[-1,-12],[2,-18],[-1,-26],[11,2],[4,-8],[-4,-17],[0,-11],[-12,0],[-12,-7],[-2,-10],[-11,-7],[-7,-59]],[[6710,6634],[-5,-8],[-10,9],[-12,4],[-1,9],[-5,-6],[-24,3],[-2,4],[-12,-4],[-6,10],[-7,2],[-14,-2],[-4,8],[-17,5],[-4,19],[-4,42],[-6,17],[-11,3],[-8,-2],[-5,-8],[-9,-4],[-3,-11],[-6,2],[-13,-17],[-11,5],[-3,7],[-17,0],[-8,16],[-10,6],[-13,16],[-4,16],[-12,11],[-9,-1],[-8,6],[-9,35],[0,12],[-8,13],[2,10],[-6,0],[1,16],[-15,30],[0,10],[-5,6],[-11,-12],[-2,9],[-7,-1],[-9,13],[8,-1],[0,9],[-9,-8],[1,-20],[-11,-4]],[[6347,6908],[-3,15],[-11,14],[0,31],[-9,0],[0,23],[4,21],[-9,22],[-5,19],[-6,-1],[-14,21],[-16,15],[4,5],[-4,15],[-11,15],[-5,22],[3,14],[-4,8],[2,8],[6,-3],[-2,9],[7,21],[7,2],[1,7],[-6,16],[1,10],[6,2],[-4,9],[-6,-3],[-14,14],[-3,21],[-5,0],[-1,18],[-6,5],[2,12],[-3,7]],[[6243,7322],[0,10],[-6,6],[1,17],[-10,17],[6,20],[-4,0],[-3,45],[-5,13],[11,4],[4,19],[7,-7]],[[6347,6908],[-13,5],[-3,-3]],[[6331,6910],[-7,6],[-9,0],[-6,-5],[-8,-33],[-9,-20]],[[6292,6858],[-5,-2],[-46,8],[-62,91],[-11,18],[-47,49],[-34,10]],[[6087,7032],[4,8],[-7,3],[0,11],[-8,51]],[[6076,7105],[4,3],[43,44],[14,11],[7,22],[1,40],[3,8],[-2,23]],[[6146,7256],[0,0]],[[6146,7256],[0,20],[3,10],[13,5],[15,26],[-1,3]],[[6176,7320],[6,2],[6,13],[9,0],[10,-7],[12,-2],[8,4],[1,-18],[11,12],[4,-2]],[[4554,9014],[7,-14],[12,-7],[12,13],[-4,-20],[10,2],[-2,-20],[12,4],[0,-8],[21,-10],[-4,-10],[6,-8],[-13,-25],[-13,-4],[-2,-15],[-24,-8],[-39,-26],[-31,-6],[-1,-11],[-23,-7],[-27,8],[-12,0],[-28,20],[-42,-4],[4,9],[14,4],[10,10],[2,11],[-13,-6],[-9,29],[-32,1],[-11,-4],[-3,8],[23,2],[15,8],[25,-2],[-21,7],[22,16],[-39,7],[-20,-9],[-18,6],[7,8],[12,-7],[-8,15],[17,-5],[-9,12],[10,17],[20,-8],[-5,7],[9,16],[11,-11],[25,-14],[-2,-19],[9,-29],[0,13],[9,15],[9,-10],[5,13],[-5,20],[9,3],[13,-22],[6,-1],[-1,19],[22,6],[16,-26],[-6,27],[10,-1],[10,-11],[12,14],[6,-6],[13,3],[-3,19],[15,2]],[[5993,7068],[-6,-5],[0,-15]],[[5987,7048],[-10,8],[-6,-14],[0,-19],[6,-9],[-7,-11],[-2,-14],[10,1],[5,6]],[[5983,6996],[0,-9]],[[5983,6987],[0,-6]],[[5983,6981],[1,-8]],[[5984,6973],[-8,-34],[0,-21],[-6,-33]],[[5970,6885],[-2,-4]],[[5951,6980],[8,18],[-2,4]],[[5957,7002],[7,21],[6,44],[5,21]],[[5975,7088],[10,0],[1,9],[8,10]],[[5994,7107],[-1,-9],[3,-19],[-3,-11]],[[5434,7386],[-12,-29],[-3,-25],[6,-18],[-6,-11],[1,-8],[-10,1],[-8,6],[-3,10],[-7,8],[-7,-1],[-25,27],[-10,1],[-4,6],[0,19],[7,6],[6,-6],[4,10],[7,1],[10,-13],[9,4],[9,-2],[17,10],[4,-4],[12,11],[3,-3]],[[5256,7557],[8,-6],[8,-34],[-5,-14],[3,-13],[-2,-30],[-6,-24],[-10,6],[-5,-19],[-8,0],[-7,17],[5,39],[-4,1],[2,23],[-5,17],[-4,0],[2,16],[8,-2],[9,6],[11,17]],[[5380,7862],[-9,-16],[7,-7],[-4,-8],[3,-12],[8,-10],[-5,-1]],[[5380,7808],[1,7],[-18,1],[-3,-5],[-16,-12],[-4,2],[-1,-16],[9,-13],[-6,-7],[-2,-13],[2,-18],[8,-16],[9,-7],[19,-21],[12,-54],[18,-28],[12,-11],[25,0],[4,-9],[-8,-15],[19,-17],[13,-7],[14,-18],[13,-8],[0,-6],[12,-15],[2,-10],[-4,-18],[-9,6],[-5,23],[-11,0],[-14,11],[-11,-25],[-2,-21],[9,-5],[9,-11],[-1,-29],[-11,-1],[-5,-8],[1,-18],[-8,-10],[-8,-20],[-10,4],[0,15],[5,3],[3,12],[-3,8],[9,5],[2,12],[-4,8],[-2,21],[-4,6],[-2,20],[-7,11],[-5,-5],[-12,13],[2,8],[-6,18],[-8,1],[-5,8],[-7,3],[-10,22],[-10,1],[-8,-3],[-5,11],[-7,2],[-12,24],[-10,10],[-8,18],[-10,5],[-3,12],[-9,9],[1,6],[-8,2],[1,18],[-7,17],[0,14],[-5,13],[-7,1],[-16,17],[-15,5],[-14,-19],[-3,-11],[-17,-6]],[[5344,7711],[0,0]],[[5345,7596],[0,0]],[[2849,6246],[15,-3],[3,-8],[12,-7],[4,-14],[-9,-3],[-10,6],[-1,-7],[-6,3],[-1,-11],[-7,10],[-8,-1],[-7,10],[-3,10],[-8,2],[5,12],[10,5],[11,-4]],[[6087,7032],[-4,-6],[-57,-30],[15,-28],[13,-29],[-9,-10],[-4,-18],[-21,-8],[-7,-22],[-12,-17],[-31,9]],[[5970,6873],[0,12]],[[5984,6973],[-1,8]],[[5983,6987],[4,0],[0,25]],[[5987,7012],[0,36]],[[5993,7068],[7,-5],[10,-16],[12,-3],[54,61]],[[8563,6721],[-5,-10],[-7,-5],[-4,-21],[0,20],[7,8],[-3,7],[7,-1],[4,12],[1,-10]],[[8603,6820],[-13,-15],[0,9],[11,11],[2,-5]],[[8624,6937],[5,-5],[-7,-8],[2,13]],[[8639,6942],[-5,-5],[6,22],[-1,-17]],[[8616,7056],[0,-12],[-6,-7],[1,18],[5,1]],[[8578,7069],[-1,-10],[-6,2],[7,8]],[[8638,7135],[3,-16],[7,-3],[9,6],[1,-15],[-5,-9],[10,1],[0,-17],[5,-2],[-11,-22],[-6,-38],[0,-16],[-3,-14],[-7,5],[1,-11],[-12,-13],[2,20],[-5,12],[-2,-4],[0,-22],[-9,5],[4,18],[-5,12],[1,21],[2,-2],[8,19],[-2,11],[3,12],[-5,15],[-8,2],[7,-19],[-6,-11],[1,11],[-10,-10],[-6,18],[1,10],[4,-14],[5,-1],[-1,10],[-11,11],[1,10],[6,-2],[18,22],[2,9],[6,4],[7,-3]],[[8726,7162],[8,-9],[5,1],[-1,-13],[4,-10],[-10,-11],[-5,-23],[-8,15],[-5,2],[-13,-11],[0,-7],[-7,-11],[-1,-16],[-10,0],[3,9],[-6,1],[-6,31],[11,14],[2,17],[6,6],[5,-10],[10,2],[3,14],[8,9],[7,0]],[[8747,7160],[-3,-8],[-3,8],[8,15],[-2,-15]],[[8595,7181],[-2,-23],[-3,4],[1,16],[4,3]],[[8845,7375],[1,-10],[-6,-6],[-1,17],[8,13],[-2,-14]],[[8923,7564],[5,3],[-1,-34],[2,-14],[8,-11],[5,-22],[4,-26],[-5,-14],[0,-12],[-7,-6],[-5,-25],[1,-17],[-6,9],[-7,-6],[-3,-24],[3,-14],[-2,-39],[-5,-8],[-5,-19],[-1,-20],[8,-27],[-11,-7],[-2,-21],[-16,-17],[2,30],[5,11],[-8,0],[-4,-12],[1,-16],[-7,11],[-8,-5],[0,-21],[-9,-16],[-1,25],[-6,4],[-6,-11],[-4,-18],[-17,5],[-15,-6],[7,9],[-13,1],[0,16],[-5,-3],[-3,-22],[9,-9],[1,-10],[-7,3],[-10,-9],[0,-10],[-6,-8],[-3,-15],[-5,-7],[-10,5],[-1,8],[-9,11],[3,8],[-3,14],[10,17],[-2,9],[-11,-4],[-6,7],[-7,0],[-20,-18],[-10,1],[-3,-9],[-6,2],[-15,-9],[-1,9],[-8,-6],[-2,-24],[-11,13],[-16,-7],[-4,7],[-3,-8],[-1,25],[3,5],[12,-1],[3,10],[7,5],[17,28],[7,7],[-1,9],[17,8],[5,-8],[24,6],[7,7],[11,-2],[8,7],[-1,-12],[13,-4],[12,10],[-3,18],[5,16],[7,8],[10,28],[-1,26],[11,10],[6,1],[-3,-13],[-9,-5],[4,-6],[-2,-13],[10,-6],[3,10],[21,13],[10,12],[10,29],[14,15],[1,16],[9,23],[3,24],[4,10],[1,17],[-4,11],[-5,-3],[7,19],[1,11],[-5,13],[5,10],[7,3],[1,26],[9,-5],[3,-20],[3,9],[8,-6],[3,19],[-13,-5],[3,23],[10,-10]],[[8944,7799],[15,-24],[4,-13],[19,-27],[11,-7],[0,-6],[12,0],[3,-7],[13,-4],[15,25],[1,-8],[-7,-17],[-1,-9],[8,-28],[8,6],[-4,-12],[-6,0],[-8,-10],[-27,-4],[-11,-14],[-8,-20],[-3,-23],[-8,11],[-14,9],[-8,11],[-12,9],[-8,-3],[-12,-15],[-9,15],[-5,0],[-6,-18],[12,-8],[13,-20],[-13,-1],[-8,-7],[-6,-13],[-7,10],[5,14],[-3,17],[-7,6],[3,26],[12,7],[5,11],[-5,13],[6,8],[8,-9],[10,-3],[7,10],[-3,22],[9,14],[0,22],[3,6],[1,20],[-6,23],[3,12],[9,3]],[[6762,7807],[-15,8],[-3,11],[1,13],[12,14],[11,-3],[7,-11],[1,-13],[-4,-11],[-10,-8]],[[7140,7205],[-9,31]],[[6651,7782],[-20,19]],[[6631,7801],[12,18],[8,-37]],[[7227,7611],[-6,13],[-15,4],[-12,17],[-14,6],[-14,0],[-19,2],[-14,5],[-13,-5],[-16,1],[-3,-6],[-13,2],[-12,8],[-12,13],[-21,-10],[-5,-27],[3,-9],[-22,14],[-27,9],[-10,-1],[-10,-13],[-5,-15],[3,-3]],[[6970,7616],[-6,-3],[-4,-11],[-4,5],[-9,-16],[-20,-15],[0,-5],[-10,-5],[0,-10],[-13,-17],[1,-19],[-4,0],[-13,13],[4,14],[-5,7],[-33,-3],[-5,20],[-2,30],[-14,0],[2,57],[-8,-7],[-8,26],[-7,5],[-10,19],[-12,-10],[-37,4],[-32,-8],[-23,38],[-2,12],[-28,28]],[[6668,7765],[0,34],[-2,9],[-7,-1],[3,20],[17,-5],[8,16],[12,7],[2,14],[-11,2],[-3,9],[-13,3],[-8,-7],[4,-13],[17,0],[2,-11],[-4,-6],[-24,2],[-2,12],[-7,0],[7,-14],[-3,-17],[-8,-6],[-4,5],[4,13],[-15,-3],[-6,-23]],[[6627,7805],[-73,-31],[0,-212]],[[6554,7562],[-14,-3],[-15,32],[0,6],[-20,23],[-20,-3],[-14,-9],[-15,-21]],[[6456,7587],[-1,20],[6,15],[3,22],[-15,9],[-8,-3],[-6,18],[-12,0],[1,23],[-4,4],[-8,33],[-17,9],[1,17],[16,-1],[4,-6],[16,-2],[-17,20],[12,28],[9,5],[22,0],[11,-6],[10,2],[-15,10],[0,6],[9,18],[4,40],[-8,19],[-13,2],[-10,-10],[-16,14],[-9,3],[-12,-11],[-9,-2],[-18,-21],[-13,2],[-2,-14]],[[6367,7850],[-9,9],[-10,5],[0,12],[6,-6],[7,6],[-9,19],[-4,15],[-14,23],[-11,0],[-7,5],[-1,-9],[-7,7],[0,26],[-18,8],[8,30],[8,10],[-7,14],[3,28],[12,12],[-1,14],[9,9],[22,-37],[13,11],[-5,20],[0,13],[20,17],[0,15],[11,0],[15,12],[6,17],[5,6],[14,-3],[1,-11],[11,-1],[6,12],[11,6],[5,-16],[23,0],[9,-7],[1,-9],[7,-1],[6,-13],[10,-7],[-3,-16],[8,2],[1,24],[10,-13],[16,-15],[13,11],[11,20],[18,0],[5,-11],[11,1],[1,13],[22,-4],[0,-11],[10,-11],[16,-3],[1,-9],[7,4],[5,18],[9,-10],[15,-1],[17,10],[2,19],[4,6],[-7,11],[-10,1],[-3,8],[-16,3],[3,8],[-12,4],[11,15],[7,1],[10,11],[-10,23],[22,16],[17,-3],[1,7],[-13,9],[-14,3],[2,12],[-6,8],[5,11],[-6,3],[12,10],[4,-6],[43,7],[25,14],[25,5],[9,-4],[-1,10],[7,7],[15,-1],[15,6],[33,8],[13,6],[2,13],[10,0],[2,9],[8,-4],[-1,9],[8,-6],[13,0],[14,-11],[8,9],[14,-12],[1,-18],[6,-3],[-1,-23],[-6,0],[6,-13],[3,6],[11,-4],[10,5],[3,9],[9,-14],[-3,-13],[9,3],[-4,10],[11,-1],[3,-8],[11,-2],[8,7],[-3,-12],[-6,1],[-6,-17],[6,-8],[13,12],[14,-10],[1,12],[9,9],[7,-2],[12,11],[-2,4],[31,15],[12,8],[-7,-19],[-8,1],[3,-9],[34,-36],[7,-11],[42,-97],[12,-38],[15,7],[-1,14],[6,6],[15,-7],[-3,-15],[9,2],[2,-13],[11,3],[6,-4],[17,5],[18,12],[13,-7],[11,-20],[0,-15],[23,-14],[-2,-7],[9,-19],[19,-1],[6,-7],[12,20],[0,-10],[12,-22],[7,-9]],[[6163,5412],[-17,-50],[-9,-17],[0,-175],[1,-39],[15,-39],[0,-7]],[[6153,5085],[-6,-15],[-9,-4],[-4,-20],[-5,-9],[-5,0],[-9,-13],[2,-12],[-3,-18],[-6,-12],[-3,-25],[-4,-11],[-7,-30],[-6,-3]],[[6088,4913],[-21,33],[-19,27],[-5,13],[4,6],[-1,14],[-100,116]],[[5946,5122],[3,12],[-4,7],[0,10],[4,7],[9,-1],[-2,6],[11,4],[-4,11],[-10,-6],[2,-6],[-9,7],[-3,12],[1,12]],[[5944,5197],[4,21],[7,12],[2,15],[9,9],[2,18],[3,6],[0,26],[-3,18],[2,3],[-14,40],[-2,17],[2,13],[-8,5],[-3,24],[-2,2]],[[5943,5426],[11,23],[15,14],[14,9],[4,-7],[2,-16],[8,0]],[[7045,7454],[-13,-5],[-15,2],[-9,-5],[-2,-6],[-5,10],[-7,-7],[-2,12],[-8,8],[-12,-11],[-8,-1],[-4,11],[-36,-5],[-2,14],[7,20],[14,6],[18,-12],[1,7],[8,8]],[[6970,7500],[12,3],[11,-7],[9,15],[8,-3],[0,14],[7,-6],[4,9],[10,8],[-13,3],[-5,9],[-9,-1],[0,10],[-8,0],[-6,22],[-1,-10],[-6,-2],[0,-13],[-6,-1],[-12,7],[-4,14],[-4,-4],[-9,10],[8,7],[22,29],[-8,3]],[[6976,7489],[-6,4],[2,-14],[4,10]],[[6993,7480],[0,0]],[[6961,7477],[0,0]],[[7901,5783],[-6,7],[-11,2],[-7,-4],[-3,5],[5,13],[0,15],[-4,5],[-3,-16],[-9,2],[-2,38],[-3,3]],[[7858,5853],[0,7],[-6,22],[0,22],[-6,7],[0,21],[-3,7],[-2,25],[6,0],[10,26],[1,11],[9,8],[12,5],[9,-5],[5,3],[11,-2],[5,4],[6,-3],[2,-10],[4,8]],[[7921,6009],[3,-14],[13,-1],[3,-9],[6,-1],[2,7],[-6,19],[7,7],[6,-2],[3,6],[8,-14],[4,0],[8,11],[5,2],[2,10]],[[7985,6030],[0,-14],[-3,-2],[-2,-19],[3,-10],[0,-10],[5,-22],[-5,-20],[4,-24],[-2,-15],[-2,-6],[-4,5],[-8,-14],[-8,-7],[-8,-1],[0,-17],[-11,7],[-4,-13],[-1,-15],[9,-13],[1,-17],[-9,3],[-3,10],[-10,-2],[-3,-7],[-7,6],[1,-11],[-6,-13],[-9,0],[-2,-6]],[[627,5299],[5,-18],[-8,8],[3,10]],[[8522,7115],[1,-14],[-17,-6],[-2,8],[5,8],[13,4]],[[8508,7172],[1,-8],[-7,2],[6,6]],[[8575,7196],[-1,-14],[-5,11],[6,3]],[[8518,7361],[8,22],[5,6],[27,0],[7,17]],[[8565,7406],[7,-27],[14,-31],[6,-25],[4,-25],[-2,-7],[-1,-33],[4,-6],[-2,-25],[-9,-23],[-18,0],[-1,-15],[-3,6],[-17,1],[-2,-20],[-4,14],[0,-13],[-5,-9],[-3,13],[-6,-5],[-3,-11],[-4,3],[-4,-10],[-2,15],[-7,2],[0,9],[6,-7],[2,11],[-4,1],[-2,18],[2,17],[6,9],[-4,4],[8,7],[-7,10],[5,1],[-5,11],[-1,31],[-3,8],[3,12],[7,-1],[-6,42],[4,3]],[[5598,7616],[-9,-9],[-3,6],[-10,-8],[0,-11],[-5,0]],[[5557,7633],[8,15]],[[5565,7648],[9,17],[-2,6],[14,-7],[8,-19],[10,-5],[-6,-24]],[[6338,6909],[5,-15],[-4,-7],[-5,12],[4,10]],[[6345,6826],[-22,0],[-6,27],[-25,5]],[[6331,6910],[7,-26],[-6,2],[-7,-12],[10,-1],[2,-19],[8,-28]],[[7836,6473],[2,-9],[8,-12],[6,-22],[2,9],[5,-5],[0,-9],[-2,-23],[7,-19],[15,-11],[2,8],[9,10],[5,-4],[9,-13],[-1,-9],[-6,-3],[9,-6],[0,-8],[7,-2],[0,-11],[-2,-10],[-9,-12],[-8,6],[-4,-15],[-6,-7],[18,-21],[4,-8],[9,-5],[5,-6],[-2,-12],[6,-14],[5,0],[7,-30],[13,-24],[9,-17],[0,-18],[4,-11],[5,5],[4,-14],[8,-12],[4,-1],[-1,-8],[-6,-5],[2,-12],[7,-8],[5,-12],[-5,-33]],[[7921,6009],[9,11],[0,20],[1,5],[-3,11],[3,6],[2,24],[-5,5],[0,13],[-11,7],[0,8],[-8,15],[0,29],[2,20],[-3,9],[-7,7],[-6,14],[-7,24],[-18,8],[-2,-10],[-9,-15],[-9,-6],[-16,16],[-4,-9],[-19,-26],[-4,-7],[-5,6],[3,19],[4,9],[0,17],[-3,3],[5,14],[0,15],[3,7],[-3,6],[-1,19],[2,7],[-12,2],[-2,-7],[-7,0],[-3,9],[3,29],[-5,15],[-6,-5]],[[7780,6353],[0,15],[7,14],[4,-1],[0,13],[6,16],[3,0],[9,14]],[[5975,7088],[14,52],[1,19],[9,12],[0,7]],[[5999,7178],[13,-3],[4,-23],[-9,-14],[2,-8],[-6,2],[-6,-12],[3,-5],[-6,-8]],[[4790,5433],[-19,13],[-21,22],[-9,12],[-21,40],[-9,19],[-12,7],[-1,10],[-14,13],[-3,12]],[[4681,5581],[3,14],[6,12],[15,23],[0,16],[8,8],[1,17]],[[5693,6449],[0,-115],[-27,0],[0,-28]],[[5666,6306],[-66,66],[-3,4],[-45,45],[-34,36],[-45,45],[-30,31],[-27,-26]],[[5416,6507],[-22,-22],[-20,33],[-42,19]],[[5264,6924],[10,7],[11,30],[-5,31],[6,17],[5,1],[10,22],[19,18],[-2,10],[1,34]],[[5319,7094],[10,-6],[12,-14],[15,-2],[14,6],[6,-6],[17,-5],[8,-12],[20,-6],[5,-13],[0,-14],[7,-25],[4,-7],[17,-9],[10,0],[18,-8],[23,-18],[3,-7],[18,-22],[8,0],[14,14],[10,24],[1,18],[-6,24],[0,16],[3,12],[15,24],[14,13],[10,1],[5,7],[21,-3],[21,-14],[-1,-18],[6,-6],[19,-7],[2,-5],[25,-2],[5,-18]],[[3307,5973],[-4,11],[5,10],[-1,-21]],[[7235,5735],[7,-13],[17,-49],[5,-36],[5,-8],[4,-24],[0,-20],[-2,-22],[-12,-22],[-22,-17],[-9,5],[-4,7],[-7,43],[-1,50],[1,40],[2,10],[0,17],[6,17],[-2,7],[4,10],[6,1],[-14,10],[2,7],[7,-3],[7,-10]],[[5798,3530],[6,-12],[10,-10],[3,-14],[-4,-17],[-5,-7],[1,-10],[-8,-9],[-13,-4],[-5,-7],[-4,-22],[-8,2],[-16,35],[-5,22],[8,6],[12,35],[8,2],[4,10],[13,8],[3,-8]],[[5582,8366],[-1,0]],[[5581,8366],[1,0]],[[5652,8289],[0,9],[-14,16],[-6,-1]],[[5632,8313],[-3,6],[5,24],[-8,11],[-15,1],[-21,9]],[[5590,8364],[-6,32],[0,16]],[[5584,8412],[8,9],[22,11],[15,-4],[8,3],[29,-5],[4,-4],[22,8],[5,-12],[15,-2],[26,-28]],[[5759,8496],[14,-14],[-6,-26],[14,-17],[0,-23]],[[5584,8412],[-2,19],[2,24],[10,12],[0,15],[8,15],[22,11],[18,-21],[4,-17],[12,-7],[19,15],[-2,37]],[[3249,6221],[-2,2]],[[3247,6223],[2,-2]],[[4851,7247],[2,-14],[14,-21],[11,-5],[19,8],[6,-5],[15,7]],[[4919,7214],[2,-9],[17,-2]],[[4758,6776],[-3,0],[1,-30],[-18,-3],[-7,-11],[-16,-2],[-9,7],[-10,1],[-13,-7],[2,-15],[-4,-6],[-8,-25],[-8,-3],[-4,-23],[-3,-30],[-3,-13],[-6,-12],[-12,-16],[-6,-22],[-16,-16],[-4,-13],[-6,-53],[0,-16],[-12,-26],[1,-7],[-4,-14],[-11,-4],[-22,4],[-18,-1],[-12,-4]],[[4527,6416],[1,21],[4,20],[10,13],[4,26],[5,11],[-2,5],[13,42],[-4,0],[8,12],[11,26],[5,4],[5,17],[0,22],[10,45],[0,9],[9,16],[7,4],[10,14],[10,53],[7,16],[24,8],[16,14],[11,23],[15,15],[21,49],[5,19],[1,14],[-7,13],[0,26],[2,26],[3,11],[9,18],[3,24],[-1,7],[11,17],[10,23],[26,19],[21,25],[15,48],[2,15],[9,39],[14,7]],[[5206,7702],[-2,-1]],[[5783,7801],[-3,21],[1,26],[3,22],[-4,18],[-6,5],[-17,36],[-10,30],[-8,3]],[[5739,7962],[20,10],[14,-2],[6,-9],[21,-8],[10,-13],[-1,-25],[7,-10],[5,2],[0,-20],[10,-9],[-1,-16],[6,-9],[-15,0],[-3,6],[-7,-6],[-1,9],[-7,-4],[1,-26],[-13,-19],[0,-11],[-8,-1]],[[6384,4200],[0,8],[5,14],[-5,-22]],[[6370,4487],[-2,-11],[7,-4],[1,-18],[7,-8],[4,-13],[-1,-9],[5,-25],[3,-37],[0,-29],[8,-27],[-4,-34],[-3,-9],[-6,7],[-3,25],[-8,-7],[3,-23],[-2,-5],[5,-11],[-1,-25],[-5,-13],[-6,-24],[2,-29],[-4,-39],[-3,-11],[-10,-59],[-2,-19],[-7,-32],[-3,-29],[-10,-57],[-4,-16],[-2,-24],[-7,-48],[-1,-16],[-4,-13],[-8,-47],[-14,-15],[-11,-2],[-13,-11],[-6,-9],[-12,-2],[-11,17],[-10,2],[-10,15],[-2,20],[-7,14],[-1,45],[3,10],[-4,6],[-1,16],[-6,12],[-4,36],[3,27],[4,6],[0,17],[7,4],[11,46],[4,7],[6,29],[-3,4],[2,24],[-6,18],[1,16],[-6,22],[-1,35],[-3,15],[15,49],[0,30],[12,-1],[11,16],[10,-2],[0,7],[8,4],[4,-6],[1,9],[6,5],[18,25],[3,-7],[-3,-10],[7,2],[-4,18],[4,5],[2,12],[6,8],[-3,-22],[11,28],[-3,11],[3,11],[4,-2],[3,11],[-4,9],[0,19],[7,-1],[1,-10],[4,-1],[0,14],[5,1],[-1,9],[6,-4],[3,5],[1,16],[3,8],[-2,22],[3,13],[5,4],[3,18],[2,-8]],[[2590,6367],[-7,-17],[2,17],[5,0]],[[1889,6595],[7,-4],[1,-9],[-8,13]],[[1800,6801],[-5,-1],[5,12],[0,-11]],[[1880,6866],[3,-12],[-3,-16],[-7,7],[2,17],[5,4]],[[1847,6884],[4,-14],[5,-1],[2,-17],[-11,17],[-3,9],[3,6]],[[2186,6889],[0,-8],[7,-2]],[[2193,6879],[11,-20],[1,-12],[9,-31],[6,-12],[9,-27],[7,-6],[-1,-15],[2,-15]],[[2237,6741],[3,-16],[3,2],[2,-14]],[[2245,6713],[2,-9],[20,-12],[4,-8],[16,-2],[9,-10],[5,6]],[[2301,6678],[0,-14],[-8,-31],[-6,-38],[-2,-30],[-1,-43],[1,-16],[-4,-22],[3,-29],[5,-34],[15,-57],[9,-17],[9,-27],[3,-25],[5,-5],[1,-9],[7,-19],[7,-4],[11,2],[5,-9],[6,-2],[8,-21],[10,3],[16,11],[17,3],[15,13],[10,2],[6,-12],[10,-3],[6,17],[-5,8],[14,16],[5,11],[1,21],[7,14],[-1,6],[1,39],[3,15],[16,17],[19,4],[17,12],[14,2],[20,-9],[6,9],[6,-10],[2,-17],[-3,-16],[-9,-18],[-7,-19],[-1,-19],[-8,-16],[9,-8],[-6,-40],[-3,-10],[-2,-23],[-3,14],[-4,3],[2,18],[-5,-4],[-3,-15]],[[2437,6020],[-20,42],[-19,33],[-11,16],[-10,10],[-1,-6],[-8,1],[-4,13],[-5,-9],[9,-4],[-11,-1],[-8,-12],[-15,-9],[-7,-8],[-8,-2],[-15,10],[-4,6],[-17,3],[-8,13],[-13,6],[-6,14],[-5,0],[-15,8],[-5,0],[-5,9],[-31,22],[-6,11],[-13,14],[-4,13],[-7,6],[-5,-4],[-32,20],[-8,21],[-9,14],[-12,13],[-15,12],[-3,14],[-5,6],[-8,22],[0,10],[-4,8],[3,8],[10,6],[-7,15],[7,12],[1,22],[-6,8],[-7,23],[-2,32],[-9,17],[-15,34],[-12,32],[-21,28],[7,-7],[0,9],[-5,-1],[-9,13],[-6,18],[7,0],[-22,24],[0,5],[-9,-3],[6,9],[-7,-1],[-8,9],[0,14],[4,9],[0,19],[-4,9],[-10,3],[-5,23],[-9,2],[-7,13],[-2,26],[2,3],[-14,4],[-8,12],[-5,13],[-5,5],[-13,29],[-2,20],[-5,2],[1,9],[-11,23],[0,16],[-10,36],[3,20],[-16,10],[-1,10],[-7,6],[-9,-6],[-10,15],[-8,2],[0,-41],[4,-8],[3,-27],[-1,-19],[7,-21],[4,-1],[17,-27],[3,-23],[7,-3],[11,-32],[3,-25],[4,-12],[8,-6],[4,-20],[6,-7],[-1,-6],[8,-25],[-3,20],[8,-10],[0,-9],[5,-13],[1,-29],[9,-25],[10,-36],[-2,-15],[3,-15],[8,-8],[0,13],[14,-16],[4,-23],[7,-10],[0,-14],[-11,-19],[-7,0],[-6,36],[-8,9],[-12,22],[-14,16],[-5,14],[-4,-3],[-4,14],[-3,-1],[-2,25],[3,3],[0,27],[-9,30],[-3,0],[-17,21],[-1,21],[-4,-13],[-10,-1],[-5,13],[-8,9],[-10,6],[0,9],[-16,20],[-1,8],[15,-5],[7,6],[5,-13],[-1,17],[2,28],[-9,26],[-4,3],[-12,26],[-6,2],[-14,19],[-4,12],[0,19],[-5,4],[-1,26],[-7,9],[0,11],[-10,22],[1,15],[-8,14],[-6,28]],[[1746,7056],[66,10],[-1,-12],[46,-30],[58,-37],[79,0],[0,26],[46,0],[11,-20],[8,-8],[14,-26],[6,-4],[7,-12],[6,-21],[-1,-10],[5,-21],[14,-20],[25,-19],[8,14],[4,30],[8,2],[3,6],[5,-5],[20,-2],[3,-8]],[[2290,6649],[-4,-5],[0,-32],[-2,-53],[6,67],[4,13],[-4,10]],[[5582,7536],[0,0]],[[5586,7536],[-4,1]],[[5581,7537],[0,0]],[[5575,7539],[-2,10]],[[5598,7616],[20,7],[2,-4]],[[5117,6285],[0,-124],[-1,-33],[-4,-7],[-4,-29],[-11,-17],[0,-8],[-14,4],[0,-5],[-47,-3],[-9,-17],[-9,-3],[-13,3],[1,-5]],[[4683,5897],[-1,36],[-6,21],[-5,-5],[-8,23],[4,5],[-2,28],[-5,6],[1,18],[-2,5]],[[4659,6034],[5,-2],[7,8],[0,24],[3,11],[6,7],[14,-22],[3,-2],[4,13],[12,1],[14,-4],[13,7],[65,0],[41,0],[5,45],[-8,15],[-1,33],[-2,21],[-1,36],[-2,22],[-6,109],[0,17],[-3,39],[-6,104],[0,14],[-3,39],[0,16],[-3,37],[50,0]],[[7737,5862],[0,-11],[-4,-2],[-1,13],[5,0]],[[7733,5907],[-2,-14],[-1,20],[3,-6]],[[7622,6095],[-2,9],[7,13],[2,-6],[-7,-16]],[[7710,6117],[-4,12],[2,5],[2,-17]],[[7602,6269],[-2,-10],[-5,9],[7,1]],[[7604,6305],[6,-6],[-6,-6],[-3,10],[3,2]],[[7780,6353],[-9,6],[0,-6],[-10,2],[3,-11],[-6,-6],[-8,1],[-1,-17],[-21,-7],[-6,8],[0,-9],[-5,-4],[-2,-10],[1,-18],[-4,-10],[3,-19],[-10,-8],[5,-6],[5,-22],[-2,-10],[11,-23],[4,-17],[7,-8],[-1,-11],[6,-28],[6,5],[-2,-15],[-7,-3],[0,-40],[-9,-4],[-2,-12],[2,-16],[6,-13],[3,-15],[11,-14],[4,-11],[3,-67],[6,-9],[1,-25],[2,1],[3,-19],[-6,-12],[-1,-12],[-5,-17],[-6,-8],[0,-8],[-5,-4],[-2,-23]],[[7742,5779],[-7,-20],[0,24],[-1,18],[7,10],[1,45],[-5,2],[4,20],[-6,11],[5,21],[-3,32],[-9,31],[-4,-1],[0,27],[-3,9],[-5,30],[0,32],[-2,26],[-4,14],[2,25],[-8,-2],[-5,13],[0,18],[-3,12],[-6,8],[0,-23],[-2,-16],[-5,-11],[-11,3],[2,-12],[-16,-8],[-2,-16],[-7,-13],[-9,8],[-6,-4],[0,12],[-5,-9],[-3,5],[3,21],[-12,-19],[-1,11],[4,22],[2,38],[4,9],[0,22],[-2,3],[-2,30],[-6,24],[-5,8],[0,20],[-2,-4],[-1,-16],[-7,9],[-6,22],[9,-10],[6,14],[-11,14],[3,13],[-4,-3],[-6,11],[-10,-1],[2,16],[-4,-12],[-5,6],[5,4],[-5,9],[0,-11],[-7,22],[-3,3],[-3,21]],[[5533,7690],[8,-17],[11,-8],[13,-12],[0,-5]],[[5538,7620],[0,-3]],[[5537,7617],[-6,0],[7,-10]],[[5537,7593],[-14,24],[-10,8]],[[8263,7933],[2,-6],[9,9],[-4,10]],[[7439,8014],[9,6],[1,10],[19,0],[8,3],[15,13],[-2,11],[25,18],[5,0],[8,12],[11,0],[12,16],[9,-2],[7,10],[7,-10],[9,6],[2,-10],[33,-2],[3,-22],[8,-10],[8,1],[15,-8],[9,7],[21,-9],[11,2],[9,-10],[7,11],[15,6],[5,15],[2,14],[-8,6],[-6,22],[7,27],[5,0],[3,14],[8,4],[7,20],[11,-11],[11,-3],[9,-10],[14,0],[23,-15],[7,1],[17,-9],[2,-43],[17,-15],[11,-7],[20,-3],[13,10],[19,4],[4,6],[21,-6],[4,-6],[13,3],[14,-20],[22,-3],[-1,-15],[17,-20],[16,1],[31,-10],[3,4],[9,-6],[20,14],[18,1],[11,8],[10,-2],[8,5],[3,12],[27,27],[17,-1],[17,-20],[9,-1],[12,8],[12,-5],[3,-6]],[[5913,3637],[-22,0]],[[5891,3637],[1,15],[-3,17],[1,16],[-3,3]],[[5887,3688],[1,16],[0,71],[-4,30],[-3,5],[-6,24],[1,14],[-7,44]],[[5869,3892],[31,64],[-2,10],[4,10],[-1,17],[6,7],[9,29],[1,14],[-6,6],[1,36],[-5,2],[0,11],[6,3],[-1,14],[4,4],[-2,36],[3,14],[-1,17],[-5,22],[4,14],[-7,-1],[-1,6],[-13,9],[-9,1],[-5,12],[-5,1],[-7,10],[-9,-2],[-2,4],[-13,-1],[0,21]],[[5844,4282],[-1,18],[-4,20],[19,14],[14,6],[19,16],[4,1],[27,19]],[[5922,4376],[6,-21],[7,-13],[1,6],[17,6],[5,-11],[2,-41],[-5,-11],[0,-9],[-5,-10],[5,-13],[1,-14],[9,-15],[5,-13],[5,-4],[0,-17],[5,0],[-2,38],[4,19],[9,2],[3,5],[1,35],[-1,16],[3,15],[-2,14],[-21,54],[-6,11]],[[5968,4405],[-2,10],[-1,28],[2,8],[-4,14],[0,16],[6,10],[2,25]],[[5971,4516],[19,0],[5,10],[9,-10],[1,-7],[15,1],[7,6],[12,-8],[11,10],[1,13],[7,4],[11,-8],[11,13],[11,0],[5,9],[9,4],[18,27]],[[6123,4580],[6,-13],[-7,-32],[0,-23],[3,-18],[0,-28],[3,-20],[-6,-8],[5,-1],[-2,-39],[4,-23],[-4,-8],[6,-2],[-3,-8],[6,-5],[0,-22],[-5,-7],[1,-8],[-3,-24],[-13,-26],[-3,-14],[-7,-7],[3,-7],[-21,-26],[-1,-7],[-11,-2],[-16,-16],[-6,-3],[-20,-22],[-11,-32],[-8,-15],[-2,-13],[-5,5],[1,-12],[-4,6],[-13,-18],[-6,-17],[-16,-26],[-3,4],[0,-25],[-3,-12],[6,-15],[3,0],[4,-39],[4,-16],[2,-20],[-1,-24],[5,16],[2,-16],[-2,-10],[3,-20],[-7,-50],[6,-4],[-3,-17],[-9,-26],[-13,-11],[-26,-17],[-11,-10],[-12,-16],[-5,-18],[-4,-6],[3,-12],[7,-5],[-1,-33]],[[4659,6034],[-6,12],[-12,16],[-1,13],[-8,8],[-2,17],[-5,13],[-10,-2],[-6,16],[-8,14],[-16,0],[-20,-9],[-19,1],[-1,-15],[-3,-3],[-2,-22]],[[4540,6093],[0,30],[2,18],[8,33],[4,26],[0,28],[-3,40],[-5,20],[-6,11],[9,24],[0,28],[-9,26],[0,-9],[-5,11],[-4,19],[-4,-3],[-1,-16]],[[4526,6379],[-1,6],[3,26],[55,0],[55,0],[0,15],[-4,71],[3,10],[12,16],[17,11],[0,146],[56,0],[36,0],[0,74]],[[6603,4026],[2,-11],[-3,-12],[-9,-1],[0,15],[4,13],[6,-4]],[[5969,4525],[0,2]],[[5969,4527],[0,-2]],[[5964,4534],[0,2]],[[5964,4536],[0,-2]],[[5952,4624],[-3,6]],[[5949,4630],[3,-6]],[[5946,4634],[0,1]],[[5946,4635],[0,-1]],[[5941,4623],[2,-16],[8,-22],[-1,-51],[3,-25],[-8,-21],[0,-15],[4,-4],[0,-16],[4,-12],[-1,-26],[2,-9],[7,-10],[-2,-24],[7,-10],[2,11],[8,-16],[4,0],[-6,34],[-6,2],[0,12]],[[5922,4376],[-7,-1],[-2,12],[-6,14],[6,8],[4,49],[9,3],[5,11],[-4,0],[-4,11],[2,15],[-3,27],[5,15],[-4,17],[7,6],[5,11],[-4,20],[-6,8],[1,15],[-4,12],[-7,1],[-1,11]],[[5914,4641],[10,-5],[4,-7],[9,1],[4,-7]],[[8093,5320],[-2,3],[0,20],[2,-2],[0,-21]],[[8269,5423],[5,-1]],[[7786,5497],[-1,-11],[-3,11],[4,0]],[[7773,5553],[-3,-8],[-3,8],[6,0]],[[7834,5543],[9,-7],[3,-14],[18,-29],[9,-33],[1,-32],[-4,-8],[0,-23],[4,-12],[-2,-6],[1,-32],[10,-15],[3,-23],[8,-23],[1,-24],[-16,4],[-4,-10],[-5,15],[-15,19],[-7,11],[-10,9],[-11,21],[-14,15],[2,9],[-2,17],[-6,17],[-11,19],[2,9],[-4,6],[1,21],[-2,19],[-6,11],[2,6],[-2,23],[0,26],[-7,25]],[[7780,5554],[2,15],[4,-9],[12,-7],[2,-11],[7,1],[0,-19],[-3,-9],[3,-8],[5,9],[9,7],[6,-10],[7,30]],[[8045,5303],[0,-10],[8,-13],[9,1],[16,-8],[6,-6],[0,16],[5,22],[0,18],[4,0],[2,16],[5,8],[11,2],[20,10],[9,9],[12,33],[7,12],[6,19],[1,16]],[[8193,5464],[1,-4]],[[8198,5465],[6,1],[6,15],[-6,9],[6,11],[6,0],[3,14],[4,4],[1,17],[6,6],[1,8],[8,18],[3,19],[3,-3],[-2,-22],[6,8],[3,15],[4,-2],[1,-18],[7,-3],[6,-10],[-4,-13],[5,-16],[6,9],[3,-14],[8,-1],[9,-15],[15,-10],[0,-11],[-15,-13],[-7,-1],[-2,6],[-7,-8],[5,-14],[9,-13],[-18,-12],[-11,10],[-1,-14]],[[8256,5598],[-5,-6],[0,10],[6,4],[-1,-8]],[[5649,4167],[22,9],[17,-1],[7,-5],[6,-12]],[[5554,3757],[1,-13],[0,-196],[-12,-8],[-2,-9],[-7,-5],[-3,-11],[-11,7],[-16,-4],[-16,13],[-5,-1],[-2,28],[-4,0],[-3,11],[-5,-2],[-4,-12],[0,-11],[-8,-7]],[[5457,3537],[-5,4],[-15,27],[-12,41],[-2,21],[-5,18],[2,11],[-5,7],[0,21],[-3,11],[-1,23],[1,20],[-11,53],[1,33],[-2,25],[3,10],[-1,27],[-14,39],[-4,18],[-13,37],[-5,37],[-3,3],[-4,20],[-7,22],[-3,18],[-8,23],[-8,14],[-5,21],[-3,36],[1,12]],[[9665,3952],[5,-3],[-1,-13],[-7,3],[-2,12],[5,1]],[[9646,3990],[4,-27],[-9,7],[-1,8],[6,12]],[[9555,4026],[7,-13],[6,0],[16,-24],[5,-3],[11,-30],[7,-3],[15,-20],[4,-10],[11,-14],[2,-10],[-3,-5],[-12,8],[-2,-4],[-6,8],[-2,13],[-4,-1],[-7,14],[-13,7],[-4,13],[-12,16],[-1,8],[-6,6],[-12,44]],[[5416,6507],[4,-53],[1,-34],[12,-31],[-1,-12],[11,-21],[-7,-29],[0,-21],[-6,-142],[-1,-9],[-22,-46],[-12,-29],[-13,-39],[0,-11],[-9,-19],[4,-39]],[[5377,5972],[-6,1],[-4,-10],[-5,0],[-14,-18],[-2,-10],[-10,2],[-7,9],[-12,6],[-22,1],[-13,-6],[-7,-7],[-8,-20],[-18,2],[-10,7],[-15,20],[-9,1],[-10,-12],[-6,0],[-3,-7],[-7,4],[-4,15],[-12,21],[-3,-3],[-16,14],[-8,-8],[-12,2],[-11,-6],[-9,-11],[-1,-28],[-4,-14],[-8,-13],[-1,-25],[1,-21],[-2,-2]],[[5377,5972],[13,-36]],[[5238,5460],[-5,-4],[-6,14],[5,-21],[-2,-4],[-17,-3],[-14,10],[0,-10],[-4,-4],[0,13],[-4,2],[3,-18],[-25,-6],[-7,6],[-8,17],[-3,12],[-3,27],[-4,8],[-3,17],[-6,13],[-13,20],[-15,4],[-12,-1],[4,6],[-5,2],[0,-9],[-19,-1]],[[2691,6046],[-6,-4],[4,-35],[-7,-20],[-4,-40],[2,-21],[-1,-19],[2,-10],[-4,-2],[1,15],[-5,-4],[4,-12],[-5,-31],[3,2],[1,-14],[-6,-11],[1,-16],[5,-12]],[[2619,5821],[-6,13],[-12,18],[-7,15],[-4,17],[-26,41],[4,10],[6,-5]],[[5093,8141],[24,0]],[[5162,8210],[-10,-17],[-10,7],[15,13],[5,-3]],[[5118,8141],[-21,6],[1,7],[9,1],[7,-11],[-3,33],[8,7],[6,13],[6,36],[10,-1],[14,21],[11,5],[24,3],[9,-12]],[[5140,8230],[7,-10],[-8,-8],[0,-15],[12,-5],[12,14],[-12,20],[-2,13],[-9,-9]],[[5157,8665],[-10,4],[10,9],[0,-13]],[[5249,8849],[3,-8],[-16,-5],[-3,7],[16,6]],[[5244,8857],[-2,-7],[-13,0],[15,7]],[[5344,8955],[3,-6],[-12,-11],[9,17]],[[5387,9114],[3,-5],[-17,-6],[5,13],[9,-2]],[[5420,9124],[-11,-11],[-15,-6],[9,15],[17,2]],[[5441,9154],[2,-15],[8,12],[8,-5],[-1,-15],[-21,-8],[-4,-7],[-17,-3],[6,18],[6,0],[6,23],[7,0]],[[5421,9152],[6,-15],[-9,-5],[-18,7],[21,13]],[[5439,9158],[-11,-3],[20,19],[-9,-16]],[[5492,9188],[10,-7],[-3,-14],[-32,-8],[9,12],[-6,8],[22,9]],[[5523,9207],[6,-7],[-8,-11],[-17,-2],[5,15],[14,5]],[[5533,9218],[12,-6],[-15,-10],[-9,7],[12,9]],[[5652,9249],[5,-8],[-16,-11],[-6,7],[17,12]],[[5649,9262],[-11,-16],[-24,-4],[7,13],[17,-3],[11,10]],[[5856,9203],[2,-15],[-17,4],[-10,-15],[-16,-3],[-11,-16]],[[5572,9158],[-14,0],[7,-8],[-11,-20],[0,-11],[-42,13],[-8,-3],[1,-19],[-8,-13],[-16,8],[-15,-11],[-5,-16],[-14,-13],[9,-12],[-1,-10],[-27,-31],[2,-13],[-12,-7],[-15,-1],[3,-17],[-3,-30],[-5,-12],[-20,-30],[14,-8],[1,-15],[-5,-10],[-21,5],[-15,-8],[-14,-21],[-5,-18],[6,-16],[-4,-24],[7,-20],[-5,-30],[20,-20],[-4,-18],[-13,-4],[10,-29],[-3,-21],[-10,-13],[-7,0],[-6,-16],[4,-21],[-6,-21],[-5,6]],[[5317,8580],[-2,7],[-16,4],[-5,22],[-5,-3],[1,-15],[-5,-12],[-15,-2],[-28,-36],[-16,-16],[-15,-5],[-30,5],[4,7],[-19,9],[-10,9],[-4,11],[2,18],[14,-10],[-5,13],[9,14],[-12,11],[2,-11],[-10,-4],[-8,9],[8,18],[11,0],[-5,7],[7,5],[5,15],[10,13],[-13,-9],[-6,-16],[-6,16],[-6,-8],[-6,8],[3,14],[12,-3],[-1,14],[-10,-9],[-10,14],[3,16],[10,0],[-13,10],[0,10],[11,7],[-11,5],[11,16],[33,-6],[-31,8],[-7,-3],[7,17],[13,1],[25,16],[-12,-3],[12,13],[22,-8],[-1,10],[-16,2],[-2,12],[10,5],[7,-6],[16,2],[4,11],[12,-2],[-5,11],[34,19],[7,-14],[24,5],[-2,8],[19,14],[2,9],[-18,-7],[2,-9],[-26,-14],[-12,16],[15,11],[-3,9],[14,10],[12,17],[13,-11],[0,17],[11,5],[4,17],[19,3],[-10,6],[10,12],[-8,12],[27,33],[-8,8],[9,16],[12,10],[-7,6],[20,4],[10,13],[22,-3],[0,5],[-28,1],[28,31],[-15,-9],[4,15],[30,7],[-22,1],[23,8],[5,-17],[6,8],[-11,14],[17,8],[32,-1],[-9,8],[-29,-5],[2,11],[24,6],[6,22],[10,6],[4,14],[19,5],[11,13],[26,10],[8,-11],[15,2],[11,14],[19,-17],[-5,14],[-18,15],[28,3],[20,-6],[5,-14],[11,25],[29,23],[0,11],[37,-7],[-19,-17],[-9,-26],[8,-1],[6,15],[33,35],[-3,-34],[17,22],[11,6],[-8,10],[28,3],[8,-5],[-19,-29],[14,2],[11,20],[9,1],[21,-14],[8,4],[27,-25],[-16,-2],[-10,-10],[-39,6],[-3,-4],[29,-8],[-2,-12],[34,3]],[[5713,9281],[11,-11],[-15,-3],[-6,9],[10,5]],[[4778,9282],[-1,-9],[-15,-2],[16,11]],[[5647,9686],[-7,-11],[38,-10],[-33,-33],[-23,0],[10,17],[-53,-6],[22,27],[-22,9],[23,8],[45,-1]],[[5596,9708],[21,-5],[1,-13],[-43,-4],[-15,17],[36,5]],[[5313,9706],[24,-18],[-29,12],[-16,19],[13,4],[8,-17]],[[5467,9783],[4,5],[53,-31],[2,-16],[23,1],[8,-9],[40,-9],[-5,-12],[-44,-1],[-22,-10],[3,-21],[-18,-4],[-5,-31],[-14,1],[-11,-30],[-12,-11],[3,-11],[-20,6],[-35,25],[-18,3],[-9,22],[50,-2],[-31,7],[59,9],[-36,4],[-50,-9],[-5,19],[40,3],[17,12],[27,1],[-3,22],[-14,-14],[-16,-1],[-1,23],[-28,-21],[10,-6],[-25,-10],[-23,-1],[-17,20],[-20,10],[21,16],[-19,4],[10,14],[-23,-12],[-16,26],[31,17],[9,-10],[47,12],[-3,-10],[-33,-9],[37,-1],[19,16],[20,-12],[5,-15],[28,-25],[-14,23],[-7,33],[24,9],[7,-9]],[[5642,9812],[113,-16],[-1,-15],[-37,-13],[-5,-13],[-38,-5],[-6,-7],[-32,2],[-1,11],[-57,-2],[-32,10],[22,8],[39,1],[0,7],[-66,-7],[-28,4],[-12,23],[33,-5],[33,19],[53,-25],[3,26],[19,-3]],[[9617,2273],[0,-19],[-6,6],[6,13]],[[9665,2494],[6,-10],[0,-14],[-12,-2],[-5,-8],[1,13],[5,6],[-1,14],[6,1]],[[96,2665],[10,-1],[-9,-6],[6,-11],[-9,-5],[3,13],[-9,8],[8,2]],[[9802,2850],[-4,0],[-2,-14],[9,-2],[1,-21],[4,-9],[10,14],[6,3],[3,-10],[3,13],[9,-2],[-4,-7],[3,-10],[-6,-8],[6,-18],[-8,-17],[-3,-13],[-9,-13],[-6,-23],[-15,-16],[-1,-24],[9,-5],[1,-9],[-7,-4],[-10,10],[-7,-9],[-25,-22],[-4,-20],[0,-17],[-7,-15],[-5,-25],[0,-16],[-8,-3],[-17,-24],[-4,-11],[-13,-7],[-11,0],[-1,6],[-13,-4],[-5,16],[-11,-2],[-2,10],[-8,3],[-3,-7],[-16,3],[1,13],[-9,0],[0,10],[9,6],[-2,8],[4,17],[8,-7],[-4,16],[36,56],[2,7],[10,1],[19,21],[8,4],[16,27],[14,12],[13,29],[6,37],[9,4],[8,16],[1,31],[15,21],[7,0]],[[9872,3102],[4,-10],[-7,5],[3,5]],[[9807,3201],[-1,-14],[3,-11],[8,-8],[8,2],[10,-9],[2,-9],[5,4],[1,-13],[5,-10],[-2,-23],[9,-16],[-3,-21],[7,-17],[8,0],[4,-17],[5,3],[-4,18],[3,20],[3,-14],[7,-9],[1,-35],[2,-7],[14,-7],[19,-13],[10,4],[5,14],[8,7],[8,0],[7,-10],[-6,-15],[-1,-32],[-10,-9],[-2,-34],[-1,12],[-12,1],[-10,-8],[-4,-10],[1,-13],[4,-3],[-5,-25],[-8,-21],[-6,-9],[-9,-30],[-8,-14],[-13,-14],[-3,11],[-9,-1],[-8,12],[4,4],[10,24],[4,27],[-5,17],[-15,10],[-6,12],[-9,4],[-6,8],[1,14],[22,19],[3,41],[4,20],[-3,30],[4,10],[-3,8],[-8,-6],[-2,16],[-6,19],[7,-12],[-2,22],[-11,8],[1,-9],[-26,61],[2,16],[-12,29],[10,1]],[[6629,6344],[-1,12],[8,19],[-7,-31]],[[6474,6141],[-8,37],[-2,0],[-11,55],[-10,44]],[[6443,6277],[13,8],[52,37],[19,12],[9,56],[9,61],[-13,39]],[[6566,6621],[6,-28],[6,-15],[10,-17],[31,-18],[8,2],[6,-11],[13,-39],[7,-13],[8,-2],[0,-17],[-9,-27],[-4,-19],[-12,-17],[-11,-42],[-8,1],[1,11],[-5,-3],[-3,-13],[-4,-4],[-1,-20],[-3,-10],[2,-31],[2,-11],[-3,-4],[-15,-2],[-8,-6],[-7,-12],[-3,-28],[-5,-10],[-5,1],[-21,-7],[-6,-19],[2,-9],[-7,-20],[-8,-3],[-4,5],[-16,-3],[-12,-14],[-7,0],[-7,-6]],[[6557,6684],[2,8],[9,-6],[-5,-27]],[[6893,6556],[-1,-9],[-8,10],[-6,-3],[-8,15],[-5,42],[-13,5],[1,20],[-5,7],[-3,13],[-7,1],[2,-7],[-16,-8],[-13,2],[-1,-4],[-23,-1],[-19,6],[-4,-11],[-28,4],[-5,-6],[-17,-8],[1,8],[-5,2]],[[2729,5623],[3,-19],[-7,12],[4,7]],[[2836,5599],[-8,16],[-7,31],[5,4],[0,10],[5,8],[-5,3],[-4,-7],[-3,16],[-10,15],[-6,5],[-10,2],[-9,-12],[0,-13],[-8,-11],[-12,-10],[0,-8],[10,-19],[4,-14],[-10,-6],[-2,-9],[-13,-2],[0,7],[-8,30],[-1,-14],[-10,8],[-3,19],[-9,8],[-6,-1],[0,8],[-8,-4],[-9,2],[-2,-16]],[[2706,5734],[6,-10],[3,-23],[13,-4],[-4,11],[5,-3],[6,-15],[10,-1],[9,5],[7,12],[14,8],[14,22],[10,-4],[7,2],[-2,-7],[16,-2],[17,-19],[3,-9],[10,-15]],[[3073,4289],[-8,13],[-7,0],[2,-20],[-3,4],[-3,-15],[17,-10],[-2,-8],[7,-8],[4,3]],[[3084,4249],[-2,-19]],[[3044,4127],[-14,19],[0,3],[-13,15],[0,13],[-3,10],[-18,16],[-6,15],[-10,5],[-17,20],[-17,13],[-3,8],[-32,34],[-1,9],[-9,19],[-10,12],[-6,25],[-4,2],[0,15],[3,23],[-10,34],[0,7],[-8,20],[1,6],[-7,9],[-3,11],[-2,23],[-4,10],[-8,9],[1,11],[-4,20],[-12,36],[-1,20],[-4,9],[-2,18],[-5,8],[-4,33],[-6,23],[-14,29],[-6,35],[-7,12],[-6,16],[-16,16],[-11,17],[0,11],[8,6],[-2,16],[-7,11],[3,15],[-8,19],[2,25],[12,23],[0,5],[14,21]],[[8339,5486],[-9,-12],[-3,4],[12,8]],[[8361,5534],[5,-6],[-8,-6],[3,12]],[[8390,5552],[-3,0],[-4,14],[7,5],[7,-7],[-7,-12]],[[8493,5581],[-3,9],[3,5],[0,-14]],[[8251,5645],[-2,-13],[-1,14],[3,-1]],[[8489,5736],[9,-8],[3,-13],[4,4],[-1,-13],[4,-7],[0,-10],[-6,-9],[8,-6],[-1,-20],[3,3],[-2,-23],[5,-6],[1,-27],[-4,-16],[-6,-12],[-1,-28],[-4,20],[1,8],[-6,19],[-1,14],[-5,-4],[0,-9],[-5,-8],[-3,-22],[6,-6],[3,-20],[-1,-12],[-7,-21],[-7,13],[3,8],[-3,9],[-3,-14],[-10,5],[-13,14],[-5,15],[0,20],[-2,0],[1,19],[6,8],[0,9],[-5,11],[-15,13],[-3,-12],[1,-15],[-4,9],[-4,-1],[0,12],[-4,-14],[-6,0],[1,16],[-9,-3],[-7,-26],[-2,-17],[-3,-3],[-5,9],[7,30],[-1,11],[7,16],[16,6],[3,21],[8,1],[2,11],[3,-6],[6,1],[4,-13],[0,-15],[11,6],[2,17],[3,4],[6,-8],[3,5],[0,23],[4,1],[5,-9],[5,10],[7,1],[0,17],[-4,21],[2,8],[5,-12]],[[8503,5750],[-4,-2],[2,14],[2,-12]],[[8453,5767],[7,-6],[-1,-12],[-7,-13],[-12,2],[-2,9],[7,10],[3,10],[5,0]],[[8479,5754],[-4,9],[3,3],[1,-12]],[[8490,5782],[1,-31],[-5,11],[0,15],[4,5]],[[8332,5791],[-6,-5],[2,10],[4,-5]],[[8408,5792],[-5,-9],[0,11],[4,7],[1,-9]],[[8423,5815],[8,-4],[1,-7],[-7,-25],[-1,-15],[-4,-13],[0,-19],[5,-11],[-2,-12],[-7,-5],[-3,15],[-9,8],[-5,15],[2,15],[11,6],[-1,23],[4,23],[8,6]],[[8444,5821],[1,-35],[-2,-9],[-9,-14],[0,-7],[-6,-27],[-3,-4],[2,34],[9,27],[5,33],[3,2]],[[8319,5836],[0,-30],[6,-17],[-10,-11],[-4,-14],[-13,-9],[1,-12],[-9,-26],[-10,-10],[-1,-9],[-8,-14],[-6,-2],[-1,-9],[-9,0],[19,43],[4,0],[9,23],[7,11],[6,20],[12,17],[4,32],[0,14],[3,3]],[[8456,5842],[7,-8],[4,7],[6,-10],[-1,-30],[5,-8],[2,-19],[-8,-4],[2,-10],[-8,7],[-1,14],[2,19],[-2,11],[-5,5],[-4,-4],[1,30]],[[8456,5856],[5,-12],[-5,0],[0,12]],[[8396,5860],[10,-14],[4,6],[3,-11],[7,8],[-1,-24],[-9,-10],[-1,-11],[-6,-6],[-9,-2],[-6,-13],[-2,20],[4,17],[0,39],[-6,1],[3,10],[9,-10]],[[8332,5870],[2,-13],[-3,-2],[-2,15],[3,0]],[[8331,5890],[11,-11],[0,-5],[-10,1],[-1,15]],[[8405,5890],[-5,12],[6,0],[-1,-12]],[[8469,5906],[10,-3],[2,-13],[5,-4],[-2,-6],[1,-33],[6,-24],[-14,0],[-2,10],[-4,0],[-4,10],[6,17],[-5,0],[-6,16],[-8,11],[-3,20],[7,-3],[11,2]],[[8426,5905],[6,-6],[5,-13],[4,-1],[4,-15],[0,-12],[-17,28],[-8,-17],[3,13],[-1,26],[4,-3]],[[8392,5910],[-3,-30],[-3,11],[2,17],[4,2]],[[8434,5912],[3,-18],[-5,16],[2,2]],[[8421,5926],[-7,8],[2,6],[5,-14]],[[8360,5962],[15,-22],[-1,-23],[-3,-26],[-4,-5],[-9,17],[-4,15],[0,14],[-7,12],[-4,18],[10,-4],[7,4]],[[8385,5963],[7,-9],[-4,-11],[-5,8],[2,12]],[[8450,5993],[5,-11],[0,-12],[-7,-8],[-4,7],[3,5],[0,20],[3,-1]],[[8387,6049],[2,-18],[-3,-5],[-3,23],[4,0]],[[8358,6252],[7,4],[10,-14],[13,-6],[4,13],[3,0],[2,-15],[-4,-8],[-1,-29],[3,-15],[4,0],[2,-28],[-8,-32],[1,-4],[-18,-18],[2,-10],[-7,-28],[9,-32],[-3,-1],[4,-30],[5,-10],[10,-2],[-3,13],[8,9],[8,-1],[9,-20],[-1,-12],[5,-3],[3,17],[17,-13],[1,-4],[-12,-1],[0,-8],[5,-8],[4,-16],[6,-8],[2,-12],[-2,-14],[-6,5],[-1,13],[-7,1],[-8,7],[0,14],[-3,11],[-7,6],[-5,16],[-9,7],[2,-18],[5,-15],[-3,-12],[-7,25],[-17,19],[-8,-8],[1,-6],[-11,-4],[-4,16],[-6,2],[-2,-7],[-1,24],[11,17],[-4,14],[-9,-4],[2,-13],[-4,-3],[-4,23],[-7,4],[-1,23],[-4,8],[1,26],[-4,3],[0,23],[9,-15],[9,5],[-3,17],[0,21],[4,10],[-1,11],[0,43],[5,23],[-1,10],[10,4]],[[8740,5620],[-2,-13],[-3,3],[5,10]],[[9256,4529],[13,-10],[0,-5],[-10,3],[-3,12]],[[9195,4611],[7,-2],[-2,-10],[-8,2],[-5,23],[8,-13]],[[9184,4640],[3,2],[5,-15],[-14,1],[0,16],[6,-4]],[[9176,4644],[-1,-9],[-5,5],[-1,9],[6,1],[1,-6]],[[9234,4667],[10,-3],[5,-11],[-10,2],[-5,12]],[[8989,4680],[-11,16],[11,-11],[0,-5]],[[8981,4701],[6,0],[1,-7],[-7,7]],[[9105,4867],[7,-7],[-1,-11],[-7,10],[1,8]],[[9299,4867],[8,-4],[3,-17],[6,-8],[1,-9],[5,-4],[8,-16],[2,-14],[-7,-8],[-5,1],[-10,17],[1,14],[-14,25],[0,19],[2,4]],[[9089,4870],[-4,0],[-2,11],[3,3],[3,-14]],[[9296,4889],[-2,-21],[-1,25],[3,-4]],[[9228,4941],[-2,-6],[7,-2],[0,-17],[-5,-20],[-8,-1],[5,-25],[-8,-9],[-11,3],[2,-8],[-14,-21],[-15,-13],[-24,-2],[-3,10],[-6,4],[-6,-5],[-2,7],[-10,12],[-9,7],[4,14],[11,-5],[3,4],[7,-8],[20,6],[2,24],[4,-27],[8,6],[8,-5],[8,6],[0,10],[10,20],[7,-3],[2,5],[-2,23],[-3,16],[7,0],[5,-8],[2,8],[6,0]],[[8915,5033],[7,-1],[25,-25],[25,-17],[13,-4],[9,-11],[5,-11],[15,-2],[0,-8],[9,-6],[5,-15],[8,-3],[13,-25],[-1,-38],[14,-4],[18,-16],[5,-7],[12,-3],[9,-22],[0,-18],[-25,-3],[0,-12],[5,-13],[1,-15],[7,-6],[8,-21],[12,-8],[3,-30],[7,-9],[2,-19],[21,3],[-4,-19],[1,-9],[7,-6],[15,-2],[1,-5],[-9,-5],[8,-16],[10,-7],[12,-3],[-4,-5],[-9,-1],[10,-10],[-7,-9],[-13,6],[2,7],[-9,8],[-7,-1],[-8,6],[-12,0],[1,5],[-11,-3],[-2,5],[-17,1],[-11,33],[-5,2],[-7,22],[-8,6],[-4,23],[-10,30],[-13,9],[-5,-1],[-7,8],[-9,2],[-6,12],[-6,-1],[2,-13],[-7,10],[1,-8],[-13,8],[4,-19],[-11,-4],[1,-12],[-18,-5],[-6,1],[11,-10],[7,-15],[1,-11],[-22,-23],[-11,10],[-20,-3],[-6,4],[-3,-5],[-6,7]],[[9195,5027],[10,-11],[11,-17],[7,-3],[14,-33],[11,-10],[5,-22],[-2,-14],[-5,-10],[-6,14],[1,21],[-5,19],[-10,21],[-6,2],[-9,16],[-5,4],[-9,15],[-10,7],[8,1]],[[9172,5046],[6,-5],[0,-12],[-8,0],[-3,9],[5,8]],[[9079,5070],[12,-5],[-3,-8],[-17,0],[0,11],[8,2]],[[9154,5105],[6,-13],[-6,5],[0,8]],[[5544,8319],[0,-1]],[[5544,8318],[4,-1]],[[5548,8317],[63,-4],[21,0]],[[5655,8150],[1,-13],[14,-27],[-5,0],[4,-18],[-10,-8],[-18,-24],[-13,-25],[4,-28],[-6,2]],[[5626,8009],[-15,8],[-11,12],[-16,-2],[-4,-6],[-6,6],[-10,0],[-14,-12],[-1,12],[-10,11],[-7,-11],[-9,7]],[[5396,8275],[8,-3],[0,13],[-10,0]],[[5394,8289],[54,20],[12,16],[10,2],[11,9],[27,5],[7,-23],[12,-6],[17,7]],[[3138,6248],[29,-2],[9,-6],[2,-7],[-7,-13],[-9,-5],[-17,3],[-12,-1],[1,15],[-3,7],[3,10],[4,-1]],[[8625,7631],[5,-14]],[[8630,7617],[-7,4],[-11,-15],[-11,-27],[4,-15],[-3,-11],[1,-19],[-11,-5],[-7,-16],[-13,-11],[-8,-14],[-9,1],[-4,-9],[-10,-8],[2,-9],[-6,-13],[2,-13],[9,-2],[17,-29]],[[8518,7361],[-8,4],[-8,-9],[-8,15],[-7,1],[2,-14],[-10,9],[-7,-2],[3,9],[-13,4],[9,5],[-3,9],[10,20],[-3,4],[4,21],[5,14],[-4,8],[-16,7],[-11,14],[1,12]],[[4525,7072],[11,-2],[-3,-7],[-10,3],[2,6]],[[4286,7362],[15,1],[0,-6],[-10,-3],[-5,8]],[[4220,7396],[-11,-2],[-2,9],[13,-7]],[[4248,7409],[-8,0],[0,8],[6,0],[2,-8]],[[4794,7325],[-12,-12],[-21,8],[-10,-7],[4,24],[1,44],[-4,18],[-8,-2],[-1,11],[8,6],[-2,7],[-4,-11],[-9,1],[4,38],[6,7],[7,36],[-1,3],[7,47],[-6,50],[3,7]],[[3492,3797],[-1,-17],[-4,-23],[-1,-22],[-3,-17]],[[5949,6986],[8,16]],[[5987,7012],[-4,-16]],[[853,4163],[-9,-2],[-1,11],[5,3],[5,-12]],[[6422,6601],[-8,-2],[-3,9]],[[6411,6608],[1,10],[-3,15],[1,20],[3,6],[4,24],[6,6],[4,-12],[5,-2],[1,-9],[-4,-14],[4,-14],[0,-15],[-4,-17],[-7,-5]],[[5783,7801],[3,-8],[11,-6],[14,12],[10,-3],[2,-9]],[[5823,7787],[-1,-22],[-14,-4],[-3,13],[-4,-3],[-6,-35],[1,-21],[-3,-13]],[[5630,7730],[-6,15],[8,5],[-10,9],[-6,-14],[-5,9],[-10,2],[-9,9],[5,16],[-15,12],[-6,9],[1,16],[-13,13],[-2,7]],[[5635,7944],[10,8],[7,-5],[20,-6],[10,3],[9,-14],[10,11],[26,6],[3,12],[9,3]],[[9064,7741],[7,1],[-12,-10],[-16,-24],[15,37],[6,-4]],[[9133,7793],[-15,-6],[-10,-15],[-5,0],[-7,-11],[-18,-19],[10,17],[-3,3],[25,28],[9,0],[12,15],[2,-12]],[[9182,7845],[-21,-27],[-10,-9],[15,27],[16,9]],[[9227,7898],[-1,-8],[-10,-14],[11,22]],[[9301,8041],[-1,-17],[-6,3],[7,14]],[[9336,8091],[-7,-15],[-9,-4],[-5,-11],[-5,16],[15,9],[4,15],[7,3],[0,-13]],[[9344,8100],[-7,6],[7,7],[0,-13]],[[8967,8309],[5,-11],[-3,-7],[8,-35],[4,-38],[-6,-46],[5,-11],[-2,-12],[6,0],[9,-69],[10,-33],[0,-7],[8,-36],[-9,14],[-23,9],[3,-6],[-10,-7],[-2,-16],[-12,-57],[6,-26],[8,-11],[0,-11],[5,-21],[9,4],[1,-28],[-3,-6],[-2,22],[-17,3],[-2,6],[-7,-5],[-6,-32],[-5,-9],[-3,6],[-4,29],[7,30],[-3,31],[7,21],[-3,26],[-5,12],[7,55],[0,46],[-3,10],[1,17],[5,19],[-5,18],[-11,14],[-1,38],[4,5],[3,26],[-4,26],[13,9],[1,-9],[10,9],[-4,8],[9,2],[-2,12],[-10,21],[5,-2],[5,11],[3,-8]],[[9669,8321],[-19,19],[4,0],[15,-19]],[[8810,8355],[-14,-11],[8,11],[6,0]],[[8827,8358],[9,-8],[-12,-22],[-6,15],[-6,1],[8,17],[7,-3]],[[5548,8317],[18,15],[-10,2],[-12,-16]],[[5544,8319],[10,17],[0,12],[12,-1],[15,19]],[[5582,8366],[-12,-19],[12,-3],[7,5],[1,15]],[[9609,8371],[18,-27],[1,-11],[-13,14],[-4,13],[-7,6],[5,5]],[[9571,8591],[3,-16],[-8,-2],[-23,-18],[9,26],[19,10]],[[5777,8600],[3,-1]],[[6924,9029],[21,-5],[-5,-13],[-16,18]],[[6396,9167],[-24,-22],[-23,-4],[-10,9],[1,19],[15,16],[13,1],[28,-19]],[[9482,9188],[-3,-8],[6,-25],[-10,6],[-2,19],[9,8]],[[9705,9201],[-6,-12],[-29,7],[-11,8],[14,11],[32,-8],[0,-6]],[[6648,9234],[5,-8],[26,-17],[0,-11],[-25,-1],[-5,11],[-10,-2],[-13,12],[-1,15],[13,8],[10,-7]],[[6464,9295],[14,-14],[-6,-11],[-7,12],[-15,9],[14,4]],[[0,9271],[9990,-7],[-25,-4],[-4,14],[8,11],[30,17],[-9999,-31]],[[8829,9305],[-3,-9],[-20,5],[23,4]],[[0,9302],[26,4],[18,-3],[27,-17],[-12,-12],[-42,-8],[-17,5],[0,31]],[[7160,9347],[-27,1],[22,18],[21,-9],[-16,-10]],[[8580,9366],[-7,-7],[-15,7],[22,0]],[[8592,9374],[-28,2],[18,7],[10,-9]],[[7209,9382],[0,-11],[-19,1],[-8,7],[16,13],[11,-10]],[[7078,9392],[-5,-14],[-16,10],[21,4]],[[6536,9406],[31,-6],[-8,-26],[-15,-9],[-7,-32],[5,-18],[16,-29],[23,-20],[19,-10],[-49,-5],[-16,3],[-2,-8],[-14,12],[-18,-1],[-11,7],[-11,34],[-11,-4],[-10,10],[-19,-6],[-8,6],[-3,22],[11,12],[15,-5],[9,22],[11,9],[-20,7],[7,8],[21,1],[-7,12],[17,12],[13,-2],[20,9],[11,-5]],[[6970,9416],[1,-13],[11,-6],[-42,-7],[3,20],[27,6]],[[8951,9436],[32,-18],[0,-21],[-33,3],[-40,10],[-27,-4],[2,8],[17,1],[17,22],[32,-1]],[[8903,9439],[-10,16],[20,5],[2,-17],[-12,-4]],[[8148,9464],[-16,-15],[-37,13],[18,14],[34,-4],[1,-8]],[[7281,9528],[-4,-16],[-14,11],[18,5]],[[9075,9530],[47,-4],[5,-12],[15,3],[49,-6],[-8,-15],[-25,-8],[-43,2],[-58,24],[7,20],[11,-4]],[[8773,9524],[-11,-1],[6,29],[14,-16],[-9,-12]],[[8863,9565],[40,-20],[10,14],[19,1],[-8,10],[35,-19],[29,1],[50,-20],[-19,-5],[5,-8],[-16,-15],[-40,6],[-11,13],[15,13],[-3,8],[-25,-4],[5,-18],[12,-15],[30,-9],[-38,-6],[-14,10],[-49,-10],[-6,8],[-17,-18],[-33,8],[-25,20],[-2,34],[18,1],[-9,9],[42,18],[5,-7]],[[7674,9577],[3,-9],[-30,3],[27,6]],[[8125,9595],[2,-10],[-18,11],[16,-1]],[[9145,9596],[-23,0],[29,8],[-6,-8]],[[6893,9615],[24,-15],[-21,-24],[-51,-17],[-116,-32],[-47,-18],[0,-15],[-22,-8],[-2,-8],[-17,8],[1,-16],[-26,8],[15,-17],[-16,-8],[-16,-31],[-24,-20],[-36,4],[-11,6],[-20,-6],[-4,9],[24,12],[-30,-4],[-2,8],[26,12],[-3,6],[26,13],[-3,20],[24,4],[-14,7],[18,4],[-18,4],[-3,9],[21,-4],[14,19],[19,-4],[-5,11],[38,20],[23,3],[14,11],[23,-2],[0,12],[52,-5],[61,15],[49,28],[35,1]],[[7679,9622],[-33,-4],[35,11],[-2,-7]],[[8666,7787],[3,-13],[-2,-13],[9,-14],[7,9],[6,22]],[[6367,7850],[-12,-15],[-2,-14],[-4,9],[-10,-14],[-17,0],[-7,-31],[-8,-23],[-10,-8],[0,-13],[14,-11],[8,-28],[-2,-14],[6,19],[-5,-26],[0,-21],[7,-10],[4,-16],[12,-26],[2,-11],[6,-4]],[[6110,7681],[-15,21],[-1,6],[-18,24],[-15,7],[-11,15],[-9,1],[-8,19],[-17,11],[8,3],[-1,11],[8,-6],[11,2],[5,-4],[0,16],[-4,2],[8,10],[2,14],[4,-6],[2,11],[11,0],[-13,17],[-5,0],[-4,15],[6,-3],[13,14],[24,9],[0,13],[-30,-8]],[[6061,7895],[-1,12],[5,17],[11,5],[3,10],[25,-3],[0,13],[6,12],[-8,29],[10,5],[-8,3],[11,26],[-1,14],[-10,-2],[-5,10],[-7,0],[-5,9],[-6,-5],[-8,10],[-18,-4],[-8,11],[-8,20],[-16,-6],[-6,-7],[-10,4],[-5,8],[-13,-5],[-6,10],[2,10],[-4,19],[-7,12],[-11,-3],[-13,12],[-3,17],[8,9],[-8,8],[-1,10],[-11,13],[-13,1],[-9,-8],[-15,5],[-1,-11],[-12,-7],[-3,5]],[[5767,8523],[9,-9],[6,9],[-6,10],[-10,-2],[7,19],[-4,30]],[[5773,8590],[9,11]],[[5778,8608],[-1,16],[11,-5],[3,11],[10,-4],[7,12],[29,-8],[2,8],[-9,9],[-25,2],[-10,28],[-16,-9],[-7,2]],[[5856,9203],[15,-9],[19,18],[16,-11],[14,-3],[-7,-8],[-20,4],[6,-7],[19,-3],[-6,-7],[19,4],[5,-5],[35,-7],[23,-1],[52,-28],[21,-21],[14,-2],[16,-14],[13,-3],[30,-21],[1,-23],[7,-2],[-5,-24],[-21,-24],[-30,-15],[-22,-4],[-28,5],[-22,9],[-27,3],[-27,15],[-36,7],[-24,23],[-11,0],[8,-15],[18,-11],[3,-9],[13,-6],[-4,-7],[14,-3],[21,-20],[-4,-21],[-6,-7],[13,-46],[-6,-4],[16,-15],[15,2],[12,-18],[31,-13],[16,9],[1,21],[-25,5],[-16,19],[-3,12],[10,2],[7,12],[18,-9],[10,-13],[0,-9],[10,10],[31,-15],[9,7],[18,-7],[-4,22],[-19,30],[4,9],[18,12],[6,9],[18,5],[22,27],[11,-8],[20,3],[22,-21],[1,11],[11,23],[0,16],[-20,19],[10,28],[3,31],[-25,18],[18,-4],[37,0],[18,-6],[16,-18],[5,-18],[-38,-5],[-12,-22],[17,-9],[8,-17],[20,-5],[34,13],[5,22],[-3,11],[26,7],[1,6],[24,9],[31,22],[8,-1],[31,13],[-1,-12],[16,4],[-12,10],[32,18],[15,-3],[-7,-14],[6,-13],[-21,-8],[29,-3],[7,6],[11,-7],[1,12],[29,14],[38,-5],[18,17],[25,8],[15,-13],[-10,-8],[1,-13],[16,-4],[8,10],[-6,7],[20,5],[13,11],[0,10],[-22,28],[15,6],[2,10],[74,-10],[20,-7],[19,-15],[62,-29],[33,-25],[2,-9],[17,25],[7,19],[-21,2],[-10,16],[-1,12],[-35,14],[3,16],[12,3],[-6,9],[6,15],[-1,20],[-16,-3],[-2,17],[8,14],[28,12],[15,17],[14,51],[12,16],[5,-5],[52,1],[39,-11],[1,-25],[-16,-26],[1,-7],[-15,-11],[8,-13],[16,-10],[5,-15],[-2,-25],[-10,-9],[8,-25],[-5,-11],[3,-21],[-3,-16],[5,-8],[26,-20],[-15,-16],[3,-22],[-18,-13],[-9,-27],[-20,-14],[2,-15],[-15,-1],[-10,-7],[-22,21],[-22,-6],[8,-15],[27,-10],[22,2],[24,-8],[10,6],[2,16],[13,2],[26,20],[1,17],[24,24],[-1,25],[-11,15],[3,17],[29,12],[31,4],[1,-11],[19,-15],[-5,-15],[5,-20],[-7,-7],[18,-13],[18,-1],[-25,13],[0,18],[20,10],[-11,14],[-5,24],[-19,5],[-24,13],[-17,1],[-20,-10],[-27,5],[3,18],[-10,15],[6,25],[17,20],[-21,41],[-15,12],[14,22],[39,16],[5,17],[-4,28],[15,-7],[6,-30],[-13,-17],[7,-17],[-5,-18],[11,-4],[57,-7],[6,-11],[12,0],[-4,17],[-17,2],[-39,16],[-8,20],[27,8],[17,-13],[15,3],[-5,14],[-15,-2],[15,14],[16,5],[28,-3],[51,-35],[23,-3],[18,5],[14,-7],[-14,-16],[-16,-6],[-2,-17],[7,-12],[-10,-12],[11,2],[0,11],[10,11],[9,-6],[-4,-27],[-10,-9],[14,-10],[-7,14],[18,0],[6,8],[-17,44],[13,23],[-6,11],[-32,15],[-3,11],[-26,4],[-14,11],[4,23],[-11,9],[2,28],[39,5],[43,-1],[59,10],[40,3],[-23,-18],[25,2],[10,13],[-19,21],[-22,4],[14,18],[-21,4],[13,10],[16,-7],[68,47],[67,8],[66,16],[-28,9],[19,3],[22,-5],[25,7],[21,-3],[-16,-13],[58,10],[32,12],[29,-10],[-29,24],[18,-3],[40,4],[1,26],[63,39],[43,3],[33,-17],[-21,-13],[-24,-3],[82,-7],[6,-6],[-27,-21],[36,-1],[4,12],[38,1],[19,-4],[27,5],[47,-24],[3,-16],[19,4],[3,-28],[-21,5],[1,-12],[22,-1],[-2,-14],[-20,-17],[-20,-6],[-12,-13],[-47,-16],[-2,-9],[-32,-15],[-20,-19],[-27,-1],[-12,-18],[-17,-2],[-6,-15],[-15,-12],[23,6],[7,17],[37,-2],[15,8],[51,12],[23,10],[-7,6],[-25,-5],[-6,8],[13,10],[25,-6],[7,7],[8,-13],[19,-6],[22,5],[-2,12],[16,-20],[-8,-12],[44,9],[19,7],[100,-13],[-18,-4],[1,-11],[38,-12],[36,-5],[25,2],[21,-8],[-7,11],[19,-6],[11,17],[-8,10],[3,16],[17,-2],[10,10],[23,-14],[29,0],[12,-16],[7,15],[30,-4],[7,-12],[34,-14],[-34,-12],[30,-6],[-39,-3],[20,-10],[18,-1],[6,-12],[-15,-11],[-19,8],[27,-37],[13,-27],[40,-21],[13,12],[18,43],[10,14],[13,-19],[23,-12],[22,0],[4,6],[31,8],[22,-6],[19,-11],[11,-13],[7,27],[16,4],[12,-13],[17,2],[-3,27],[15,17],[-29,0],[12,16],[37,2],[4,10],[-12,9],[23,-1],[23,-9],[38,0],[50,-8],[39,-12],[-37,1],[-16,4],[-13,-15],[27,6],[42,2],[-26,-26],[10,16],[-12,4],[-3,-17],[-23,-12],[29,4],[30,31],[36,0],[34,-9],[13,-13],[-12,-9],[-7,7],[-9,-11],[25,-2],[-2,-11],[20,2],[0,-13],[24,3],[18,-20],[-13,0],[26,-9],[28,3],[65,12],[45,-1],[26,-6],[33,-17],[11,-25],[-11,-19],[3,-8],[31,-8],[3,-28],[11,-11],[-10,-25],[14,22],[-2,26],[19,17],[51,7],[23,-12],[23,2],[11,-5],[24,-1],[21,16],[16,-13],[2,-19],[29,-8],[7,-18],[22,4],[17,12],[-13,32],[-11,-1],[11,11],[-1,19],[41,-7],[22,-1],[17,-10],[1,9],[37,-6],[20,2],[28,-7],[71,-27],[17,-16],[-9958,-15],[3,-12],[28,-11],[2,-9],[12,1],[20,-19],[16,-2],[-10,-7],[12,-5],[0,10],[12,-7],[8,-20],[10,-2],[-3,-18],[5,-13],[-7,-6],[14,-8],[-1,-14],[17,13],[-11,3],[9,6],[-2,17],[-9,6],[27,1],[20,-12],[-5,9],[32,-6],[10,-17],[13,-7],[10,-17],[5,4],[17,-14],[-9,0],[-14,-11],[-5,-15],[-21,13],[11,-20],[-32,3],[4,-27],[-19,-12],[-8,-11],[16,-5],[6,-9],[-13,-1],[-12,-9],[-23,10],[-2,8],[-16,10],[-33,12],[-4,29],[-29,10],[-12,-10],[-30,4],[-11,27],[9,7],[2,15],[-7,-11],[-28,-4],[0,-16],[13,-11],[-7,-23],[9982,-11],[-10,-13],[-34,-9],[-21,8],[-1,8],[-16,9],[12,-16],[-24,2],[-11,7],[20,-23],[20,12],[-3,-16],[17,-17],[8,8],[12,-25],[2,-16],[-5,-13],[18,-9],[2,-20],[7,-16],[-12,-7],[0,-10],[-28,12],[-22,3],[-10,16],[2,-16],[-21,-16],[-25,-11],[-25,-18],[-12,2],[-7,-10],[-8,4],[-1,-10],[-10,-10],[-11,2],[5,-8],[-22,-13],[-3,-12],[-17,-4],[-1,-9],[-15,-7],[-10,-16],[-6,-18],[-8,8],[-7,21],[-13,9],[-32,0],[-35,-20],[-16,-23],[-4,0],[8,39],[-33,-24],[-5,-14],[-7,-2],[-2,11],[-30,3],[2,-9],[-9,-4],[-5,-19],[4,-12],[-12,-10],[4,-10],[-18,-16],[-10,-26],[1,-19],[13,-7],[1,11],[18,-8],[3,-6],[-15,-21],[1,-36],[11,1],[4,-32],[-9,-10],[-12,13],[8,11],[-6,4],[-8,-7],[6,-6],[-16,-12],[-7,-25],[-1,-16],[11,-34],[-11,-14],[-13,-1],[-6,6],[-15,-9],[-13,-15],[-6,-22],[4,-13],[-3,-6],[5,-22],[-13,10],[-9,-5],[-21,-25],[1,-26],[-7,-19],[-10,-20],[-11,-7],[-2,-8],[-17,-22],[-9,17],[-1,40],[-4,33],[-7,23],[-4,46],[-9,60],[-2,29],[4,46],[6,29],[6,15],[17,15],[7,17],[-5,22],[16,0],[7,14],[15,0],[20,19],[24,33],[3,13],[13,12],[5,12],[8,2],[18,25],[14,14],[-1,8],[30,21],[21,9],[-8,4],[15,18],[-7,9],[8,12],[2,33],[14,12],[17,-5],[-18,17],[-15,-1],[-22,-8],[3,-11],[-8,-6],[3,-9],[-6,-15],[10,-9],[-10,-7],[-5,11],[-10,-2],[-12,-18],[-32,-32],[-19,-14],[8,27],[-17,-7],[5,11],[-3,9],[14,29],[-3,10],[-12,-14],[-10,-2],[-3,12],[-13,2],[-26,-10],[-15,3],[-22,-15],[-1,-18],[-20,-20],[0,-9],[-27,-20],[-13,-28],[-7,-1],[-2,-23],[14,5],[16,-14],[-1,-7],[-11,-3],[-8,5],[-13,-10],[-19,11],[0,-8],[-10,-2],[-2,-8],[-16,8],[-9,-11],[-17,-2],[-9,15],[10,4],[18,-1],[6,4],[-15,8],[-10,14],[-13,-8],[-12,2],[-2,7],[-23,8],[-16,-8],[5,-5],[-14,-5],[6,-12],[-14,2],[-2,7],[-12,0],[-10,-9],[-31,13],[-3,-16],[-8,-3],[-6,9],[4,6],[-27,-1],[-32,2],[-19,-3],[-25,-13],[-19,-30],[-17,-11],[-8,-13],[-5,-20],[-15,-9],[-4,-11],[-11,-12],[-14,-9],[-22,-32],[-12,-26],[-26,-27],[-8,-4],[-15,-23],[-19,-15],[0,-12],[14,-9],[30,5],[0,-28],[-4,-21],[12,0],[5,14],[-6,6],[10,10],[8,-2],[-8,-11],[9,-11],[-12,-22],[16,4],[11,9],[7,14],[1,-9],[-10,-15],[7,-3],[8,26],[-1,20],[16,-8],[9,5],[17,-12],[0,-11],[27,-32],[6,-10],[-13,-12],[8,-5],[1,-15],[-4,-13],[11,-12],[-6,-3],[3,-9],[-9,-16],[-6,-3],[0,-12],[-6,-8],[0,-18],[-4,-4],[-3,-20],[1,-32],[3,-23],[-6,-17],[1,-17],[-6,-17],[0,-14],[-26,-38],[-7,-28],[-13,-18],[-5,-27],[-18,-41],[-15,-25],[-10,-11],[-8,-20],[-6,-6],[-5,-15],[-7,-5],[-11,-25],[-3,-14],[-5,0],[-1,-12],[-18,-20],[-9,-6],[-7,-11],[-8,0],[-12,-10],[-6,7],[-4,-4],[-12,10],[-3,-4],[-1,23],[-9,-11],[1,15],[-16,-21],[-1,-11],[-14,-11],[-4,-17]],[[7858,9748],[0,-12],[30,4],[14,-16],[16,-1],[8,-19],[-16,-10],[-31,-5],[-68,-3],[-33,-14],[-21,5],[21,17],[6,19],[36,39],[19,-6],[2,11],[17,-9]],[[7118,9769],[37,-6],[-27,-3],[-10,9]],[[7523,9794],[79,-8],[-18,-13],[-55,8],[-6,13]],[[6659,9787],[-27,3],[21,7],[6,-10]],[[7715,9797],[-5,-21],[25,17],[20,0],[24,-16],[-9,-24],[-19,-5],[25,-18],[-39,-10],[-38,4],[-11,8],[-50,2],[-18,12],[-1,14],[-33,3],[29,14],[23,19],[77,1]],[[6585,9810],[-4,-16],[-28,0],[1,14],[31,2]],[[6481,9813],[15,-7],[-35,-6],[20,13]],[[6646,9809],[-52,-12],[-13,20],[42,0],[23,-8]],[[6329,9836],[-38,-20],[-39,11],[77,9]],[[6729,9835],[-5,-10],[-29,-12],[-38,1],[-13,13],[14,11],[65,2],[6,-5]],[[6537,9839],[-13,-8],[-22,8],[35,0]],[[6388,9840],[7,-8],[30,3],[-9,-14],[-60,-9],[4,-14],[-38,-4],[16,15],[-22,8],[63,10],[-18,7],[27,6]],[[7225,9845],[-28,-9],[2,9],[26,0]],[[6560,9854],[57,-11],[-29,-1],[-28,12]],[[6542,9848],[13,2],[47,-13],[-19,-7],[-41,18]],[[6797,9859],[20,-16],[-28,-11],[-36,-3],[-17,9],[46,10],[15,11]],[[7536,9852],[-37,1],[2,7],[38,-2],[-3,-6]],[[7665,9859],[54,-29],[-20,-3],[0,-24],[-75,-6],[-22,-7],[-63,20],[36,9],[15,17],[-22,-3],[16,14],[81,12]],[[6577,9869],[28,-6],[-38,-6],[10,12]],[[6605,9878],[14,-9],[-44,4],[30,5]],[[5846,5121],[2,-14],[5,-5],[3,-11],[1,-26],[-1,-18],[-8,-2]],[[5801,5040],[6,7],[8,22],[-4,17]],[[5821,5103],[7,4],[4,-9],[5,7],[5,16],[4,0]],[[4526,6379],[-1,15],[2,22]],[[6163,6147],[4,4],[4,-6],[-8,2]],[[6345,6826],[6,-29],[6,-11],[0,-14],[11,-4],[-4,-5],[5,-5],[11,-23],[8,-6],[0,-16],[6,-10],[-2,-18],[-4,4],[7,-31],[8,-17],[0,-12],[8,-21]],[[6422,6601],[7,-4],[-5,-9],[8,-8]],[[6443,6277],[-4,-2],[-58,-16],[-17,-4],[-27,-27],[-16,-40],[-3,-19],[-9,-11],[-5,1],[-7,19],[-11,-3],[-25,5],[-5,6],[-16,1],[-15,-5],[-11,0],[-7,10],[-9,-11],[-1,-24],[2,-15],[-11,-16]],[[6188,6126],[-2,21],[-5,8],[0,8],[-6,9],[0,15],[-15,23],[-9,25],[0,8],[-7,16],[-2,14],[-11,49],[-18,29],[-9,3],[-6,13],[-13,43],[3,7],[-7,28],[4,20],[0,19],[-8,23],[0,8],[-14,46],[-18,21],[-2,-3],[-12,35],[3,0],[0,20],[-4,7],[-4,18],[-8,11],[1,11],[-5,5],[-8,30],[-4,7],[-8,26],[-7,15],[-6,24],[-8,14],[-6,-3],[-6,7],[5,20],[4,47]],[[6024,6449],[0,-20],[6,-21],[2,-34],[2,-65],[5,-40],[4,-8],[10,-8],[5,-9],[1,-10],[10,-6],[3,-8]],[[5946,5727],[-6,5],[3,17],[-2,21],[-20,35],[-3,45],[2,5],[2,31],[-13,0],[0,-12],[-18,0],[7,-17],[0,-27],[2,-11],[-14,-24],[-1,-9],[-18,-39],[-13,-4],[-14,23],[-7,8],[-11,-12],[-4,-17],[-13,-9],[-5,-10],[1,-6],[-23,0],[-4,15],[-22,1],[-14,-7],[-11,27],[-8,12],[-2,15],[-21,-7],[-3,-21],[-5,-6],[0,-19],[-3,-6],[-3,-29],[-11,-12]],[[5634,5812],[3,13],[-1,15],[-4,-1],[-7,16],[3,23],[-5,-2],[0,34],[-7,7],[-6,-7],[-5,9],[6,21],[7,14],[-5,25],[4,9],[9,9],[-4,7],[-1,18],[8,6],[0,10],[7,15],[2,15],[-2,11],[7,9],[12,2],[11,-2],[0,218]],[[5943,5426],[-14,-28],[-9,2],[-3,6],[-5,-5],[-13,-3],[-6,-13],[-7,5],[-4,12],[-7,-8],[-11,7],[-8,-17]],[[4535,5893],[-1,42]],[[4540,5965],[-5,11],[-1,13],[-14,41],[-8,3],[11,9],[8,18],[9,33]],[[7884,5266],[4,-3],[-4,-7],[-7,2],[7,8]],[[3953,2073],[22,-4],[11,-7],[17,-21],[3,-11],[-10,-7],[-10,20],[-12,11],[-22,11],[1,8]],[[9445,4521],[15,-17],[-6,0],[-3,9],[-8,4],[2,4]],[[9612,4569],[-6,-12],[-3,7],[9,5]],[[9481,4595],[13,-14],[8,0],[5,-13],[0,-8],[-12,4],[-9,10],[-1,11],[-6,3],[2,7]],[[9483,4641],[4,-12],[0,-10],[-5,7],[1,15]],[[9442,4640],[13,0],[11,-20],[-4,-9],[-10,7],[-13,1],[-6,13],[0,16],[3,2],[6,-10]],[[9388,4691],[3,-9],[-6,0],[3,9]],[[9371,4689],[-5,3],[5,6],[0,-9]],[[9466,4701],[6,-16],[-2,-11],[5,-5],[7,-34],[-14,21],[-3,10],[-5,37],[6,-2]],[[9378,4711],[4,-3],[3,-19],[-7,4],[-2,13],[-9,-2],[-1,6],[6,13],[5,-1],[1,-11]],[[9365,4716],[-5,1],[-1,9],[4,5],[2,-15]],[[9349,4747],[6,-9],[-4,-9],[-5,14],[3,4]],[[9405,4746],[4,0],[9,-16],[12,-12],[9,-15],[1,-13],[-7,12],[-11,9],[-18,25],[-3,13],[4,-3]],[[9349,4800],[13,-15],[3,-16],[10,-7],[-2,-7],[-15,13],[-7,18],[-6,9],[4,5]],[[4650,5621],[2,-12],[-12,10],[10,2]],[[4681,5581],[-6,9],[-23,18],[1,15],[-7,4],[-6,10],[2,3],[-3,18],[-5,-4],[-3,18],[7,1],[-6,7],[0,11],[4,7],[-6,5]],[[2560,5955],[-2,-14],[-12,0],[-13,5],[-14,14],[-14,2],[-8,11]],[[6359,5831],[0,-104],[-27,-84]],[[6201,5844],[18,-44],[13,-18],[15,0],[11,15],[4,0],[10,12],[11,-4],[6,-7],[6,4],[21,25],[8,-5],[14,3],[9,10],[12,-4]],[[6359,5831],[14,5],[4,7],[7,0],[12,7],[13,23],[15,-9],[-5,-19],[-1,-18],[2,-35],[8,-8],[-14,-6],[-3,-53],[-4,-8],[-1,-12],[-6,-10],[-3,-22],[-6,-20],[-8,-13],[0,-11],[-6,-25],[-10,-29],[-4,-29],[-12,-48],[-13,-33],[-7,-26],[-12,-30],[-14,-28],[-10,-24],[-9,-15],[-8,-19],[-21,-26],[-8,-7],[-18,-27],[-8,-17],[-10,-15],[-22,-48],[-11,-21],[-18,-49],[-9,-28]],[[5183,5187],[-3,-2],[-1,13],[5,8],[3,-11],[-4,-8]],[[3409,5499],[3,3],[1,20],[5,7],[8,-2],[20,-10],[2,10],[33,0],[18,-8],[-1,-20],[-3,-8]],[[5626,8009],[-12,-39]],[[5377,7802],[3,6]],[[5474,8485],[-7,-30],[-12,-34],[0,19],[19,45]],[[5521,8514],[8,1],[-8,-14],[-2,-22],[-10,-8],[-5,7],[-1,19],[10,16],[8,1]],[[5327,8537],[-2,-9],[-9,3],[11,6]],[[5671,8973],[-41,-2],[-9,5],[1,-19],[-16,0],[3,-8],[-13,0],[4,-13],[-10,-13],[-4,-15],[12,-15],[-17,-17],[-4,-15],[-13,-13],[-8,1],[-11,-13],[-32,-24],[0,-9],[-17,-3],[5,-11],[-5,-7],[-15,-2],[5,-14],[-5,-29],[-7,-9],[5,-32],[0,-18],[10,-10],[10,4],[14,-25],[9,-2],[6,-19],[-20,-23],[-6,3],[8,-16],[-17,-16],[-18,-13],[-13,-2],[8,-8],[-6,-3],[3,-15],[-10,-16],[6,-8],[0,-17],[-6,-10],[-3,-37],[-3,0],[-6,-23],[-5,-8],[-6,5],[-27,-3],[-11,-14],[-2,-11],[5,-10],[-6,-9],[-11,3],[-10,-5],[-14,2],[4,15],[-14,31],[8,6],[-6,8],[8,2],[-15,26],[-18,47],[4,27],[-4,8],[-9,-4],[-4,9],[-1,39],[6,-6]],[[5891,3637],[-3,2],[-1,-29],[-12,0],[-11,7],[-9,22],[0,24],[7,17],[1,10],[8,11],[14,-15],[2,2]],[[3249,6221],[-2,2]],[[5999,7178],[-3,27],[1,18],[-4,4],[1,20],[3,4]],[[5997,7251],[7,-5],[5,9],[0,11],[9,3],[-4,14],[4,21],[8,-5],[2,-7],[12,0],[5,6],[18,10],[10,-11],[16,-3],[21,8],[20,17],[22,-1],[16,7],[4,7],[4,-12]],[[5402,5930],[5,0],[0,13],[-4,3],[-6,-5],[2,-5]],[[5398,5936],[-1,0]],[[5044,5541],[-12,-7]],[[7728,5654],[6,-7],[0,-10],[-6,-6],[0,23]],[[7840,5883],[5,-11],[-4,1],[-1,10]],[[7858,5853],[-4,22],[-5,11],[-1,-7],[-12,18],[0,8],[-5,0],[-8,10],[-7,-5],[-16,5],[3,15],[-3,7],[4,21],[-11,5],[-15,-8],[-2,-9],[4,-13],[-4,-16],[0,-27],[2,-5],[-7,-15],[0,-11],[-4,-13],[-5,-20],[0,-15],[-9,-32],[2,-7],[-2,-27],[5,-21],[-3,-10],[16,5],[4,-12],[1,-29],[9,-16],[0,-12],[4,-37],[4,-16],[-4,4],[-3,29],[-6,-2],[2,-13],[6,-18],[6,0],[9,-18],[12,1],[6,-4],[6,-21],[7,-12]],[[7780,5554],[-4,13],[-8,12],[2,14],[-6,2],[-5,10],[-2,18],[-7,5],[1,7],[-5,11],[-4,1],[-3,18],[-5,-2],[-2,-12],[-4,5],[-2,18],[2,14],[4,19],[0,16],[3,16],[7,40]],[[6962,7540],[0,0]],[[6882,7324],[1,20],[12,24],[3,15],[-7,12],[-2,14],[4,10],[-2,9],[-12,1],[0,7],[-9,4],[2,16],[8,9],[18,-6],[7,6],[0,11],[8,4],[1,14],[-10,2],[13,4],[7,-3],[1,9],[-4,11],[5,14],[8,-8],[18,14],[5,7],[8,-18],[-11,-19],[7,-10],[9,3]],[[6497,7333],[-3,23],[2,30],[-1,22],[4,15],[-12,17],[0,9],[-11,0],[1,8],[14,2],[-9,14],[6,10],[-5,3],[-14,-3],[-5,6],[0,25],[4,9],[2,19],[4,-11],[13,-1],[5,-8],[16,6],[1,12],[8,-6],[3,14],[-19,23],[-4,34],[-6,5],[-16,-3],[-5,-6],[-5,-17],[4,0],[-3,-19],[-7,9],[-3,13]],[[6554,7562],[29,-5],[4,7],[-4,7],[-2,23],[4,3]],[[6585,7597],[4,-18],[11,-2],[7,14],[-6,6],[0,13]],[[6601,7610],[5,1],[4,19],[7,-2],[-3,10],[11,1],[2,6],[8,-12],[7,-2],[7,-14],[13,2],[5,-8],[-1,-12],[6,-8],[-5,-4],[4,-10],[-3,-10],[11,-11],[18,1],[6,-3],[7,6],[9,-10],[8,-36],[4,-2],[5,-29],[27,-31],[4,-10],[13,-16],[5,2],[10,-14],[27,-29],[7,1],[19,-14],[3,-4],[-4,-9],[0,-25]],[[8444,4645],[12,9]],[[8469,4667],[5,9],[1,10],[20,8],[10,-1],[6,5],[3,-4],[11,10],[11,-6],[-13,-19],[-8,-3],[-4,-9],[-7,-2],[-6,-8],[-10,-3],[-15,-17]],[[130,3966],[6,0],[-1,-7],[-5,7]],[[3308,5807],[-4,-9],[1,-31],[-4,-4],[-14,-1],[-5,4],[10,7],[0,20],[-5,5],[8,7],[13,2]],[[5303,7135],[4,-6],[-9,-6],[0,11],[5,1]],[[5238,7310],[7,2],[10,15],[13,6],[17,-9],[-4,-1],[6,-17],[-5,-4],[10,-3],[14,20],[3,-14],[-10,-23],[-6,-4],[-3,-16],[6,-18],[11,-10],[-1,-16],[3,-7],[-3,-11],[-12,-28],[-14,-14],[-2,-16],[4,-12],[9,-10],[6,4],[0,-13],[11,4],[2,-20],[9,-1]],[[5778,7600],[-2,-9],[6,-15],[20,-17],[6,-2],[-3,-13],[-14,-1],[-9,6],[-6,-7],[-12,1],[-9,-20],[-14,-10],[-15,-24],[2,17],[13,10],[3,7],[-20,-3],[-1,9]],[[5997,7251],[2,5],[-6,17],[12,18],[0,11],[-6,7],[-10,-18],[-8,-3],[-18,15],[-11,-13],[-17,-26],[-7,1],[-17,-8],[-13,9],[-7,18],[-21,18],[-18,5],[-3,-3],[0,-18],[-5,-18],[-4,6],[-13,-10],[-12,5],[-7,9],[0,16],[-7,-1],[-7,9],[-10,3],[-3,-6],[-11,1],[-2,-6],[-9,3],[8,5],[12,0],[-1,7],[8,7],[-15,-3],[-12,2],[-1,8],[7,-2],[-10,13],[0,14],[-5,5],[7,4],[-1,13],[-17,7],[-11,9],[7,6],[-4,14],[4,3],[5,-20],[14,8],[-7,0],[-5,16],[6,2],[3,10],[-6,-2],[0,14],[-6,9],[9,16],[-24,-6],[2,29],[16,25],[16,3],[2,-7],[11,-1],[-1,11],[8,-2],[-2,-7],[11,3],[19,-3],[1,7],[-8,3],[5,6],[27,5],[-15,3],[-11,13],[6,13],[19,-6],[11,5],[15,-8],[9,1],[7,11],[29,28],[14,6],[10,9],[28,-6],[10,0],[10,9],[1,-10],[6,-11],[9,-5],[10,6],[4,-16],[8,-13],[5,8],[12,-5],[0,-6],[13,-8],[8,0],[15,-7],[32,11],[4,-6],[14,-5],[12,7],[24,20],[3,7]],[[8378,6635],[10,-12],[-5,-8],[1,-22],[-6,-18],[-4,-43],[-3,-19],[-6,-20],[-4,-5],[-4,-17],[-1,-27],[-5,7],[-1,16],[-11,20],[-2,22],[-3,0],[2,15],[0,20],[17,58],[3,3],[4,18],[12,7],[2,9],[4,-4]],[[6108,4736],[-7,-14],[1,11],[6,3]],[[6093,4842],[6,-26],[-4,-4],[-7,16],[0,15],[5,-1]],[[6102,4899],[5,-11],[-3,-19],[-2,30]],[[5914,5071],[5,-1],[2,-12],[-9,7],[2,6]],[[5882,5125],[1,0]],[[5883,5125],[1,0]],[[5884,5125],[-1,-28],[-2,0],[-1,-30],[-2,-20],[4,2],[0,-28],[2,8],[4,-3],[0,13],[5,-3],[-3,10],[7,6],[2,-10],[12,-2],[8,5],[3,-7],[17,17],[-2,8],[-4,-6],[-10,4],[5,8],[-3,9],[5,-1],[5,9],[-1,12],[6,0],[-2,7],[8,17]],[[6088,4913],[1,-10],[-4,-16],[-3,-25],[-5,-21],[2,-26],[5,-5],[12,-22],[2,-15],[-4,-5],[-4,-23],[1,-10],[4,-2],[0,-13],[-4,-14],[2,-25],[4,-7],[0,-16],[4,-4],[0,-15],[4,-21],[-2,-8],[15,-16],[5,-14]],[[5971,4516],[-2,9]],[[5969,4527],[-5,7]],[[5964,4536],[-4,14],[2,20],[-2,4],[-1,30],[-7,20]],[[5949,4630],[-3,4]],[[5946,4635],[-4,-2],[-1,-10]],[[5914,4641],[-12,10],[-3,6],[-13,6],[-6,6],[-4,13],[-11,6]],[[5865,4688],[0,10],[-4,5],[-1,11],[-11,36],[1,11],[-3,8],[2,12],[-5,9],[-7,21],[-6,-1],[-6,12],[0,13],[6,7],[-5,32],[1,21],[-6,5],[2,27]],[[5846,5121],[10,4],[26,0]],[[5883,5125],[1,0]],[[5944,5197],[-8,-3],[1,8],[-8,-8],[-3,15],[-5,-3],[-2,-12],[-6,-7],[0,7],[-6,-6],[0,10],[-8,-17],[-9,0],[-4,-9],[3,-7],[-9,-26],[2,-14]],[[5823,5155],[5,6],[2,14],[-6,2]],[[5846,5254],[4,-12],[9,28],[10,11],[3,11],[-1,25],[-3,-9]],[[6061,7895],[-18,0],[-6,-11],[-4,2],[-12,-13],[-4,3],[-22,-8],[-14,-18],[-4,3],[-11,-12],[4,-22],[15,-28],[18,10],[13,-3],[-5,-9],[1,-11],[-17,-4],[-9,7],[-4,-10],[-23,-12],[-12,-18],[-10,-2],[-11,11],[5,5],[1,24],[-8,3],[-11,13],[-9,-2],[-1,8],[24,21],[8,2],[-1,14],[-6,-3],[-5,10],[-3,-6],[-18,-3],[-17,14],[4,8],[-7,6],[17,-5],[4,9],[-11,-4],[-6,5],[-25,-2],[-24,-46],[-5,1],[-10,-23],[4,2],[-3,-14]],[[5836,7853],[9,-17],[2,3],[-11,14]],[[5948,7848],[0,-9],[-11,7],[3,-13],[4,5],[21,-17],[6,-8],[4,-20],[9,-4],[-12,23],[-7,26],[-10,-6],[-7,16]],[[3523,3302],[-5,-5],[0,-12],[-8,-5],[3,-30]],[[3517,3240],[-4,-18],[-7,-13],[0,-7],[-13,-16],[-20,-17],[-12,10],[-14,0],[-7,-8],[-20,15],[-8,13],[-18,-1],[-16,29],[-2,10],[3,27],[-1,10],[9,9],[-4,31]],[[677,6342],[13,-11],[2,-12],[8,-13],[-6,-10],[-16,-13],[-3,-11],[-7,9],[1,15],[-4,25],[5,12],[-1,17],[8,-8]],[[649,6394],[3,-7],[7,2],[8,-8],[0,-7],[-9,-6],[-4,2],[0,10],[-7,7],[2,7]],[[631,6405],[16,-4],[-2,-5],[-15,2],[1,7]],[[613,6427],[6,-8],[1,-12],[-13,2],[-3,14],[7,10],[2,-6]],[[571,6463],[4,-3],[-1,-14],[-8,-3],[-6,11],[11,9]],[[2301,6687],[-6,35],[0,12],[6,-47]],[[2761,6828],[-2,-18],[-2,17],[4,1]],[[2366,6873],[3,-1],[-11,-13],[8,14]],[[1707,7111],[7,-9],[-6,0],[-1,9]],[[1671,7144],[8,-4],[-8,-2],[0,6]],[[2993,7551],[-6,-11],[8,7],[8,-1],[-20,-15],[-36,-12],[-4,1],[4,11],[7,6],[29,6],[10,8]],[[2582,7791],[0,-10],[-7,-17],[-3,8],[10,19]],[[2679,7836],[1,-8],[-10,3],[9,5]],[[2563,7913],[-19,-17],[-6,0],[5,14],[8,6],[12,-3]],[[2541,7956],[-2,-6],[-15,-14],[0,8],[17,12]],[[1595,7969],[-3,-9],[8,-13],[-1,-5],[-9,17],[5,10]],[[1582,8004],[-1,0]],[[2511,7947],[-14,-11],[-19,-11],[-20,-29],[-17,-21],[9,-3],[22,14],[6,0],[-5,-19],[14,-2],[11,5],[7,9],[14,4],[10,7],[7,13],[7,-14],[-1,-10],[10,6],[9,-1],[12,-22],[11,0],[9,-4],[14,14],[18,-2],[13,6],[0,-17],[15,-1]],[[2663,7852],[-3,-10],[9,-12],[-16,1],[-5,4],[-2,-11],[-7,9],[-15,5],[-3,-7],[-25,-7],[-13,0],[-15,-39],[-3,-12],[-10,-17],[2,-8],[10,17],[7,-3],[-11,-49],[1,-13],[-6,-26],[0,-14],[4,-15],[-2,-28],[9,-33],[8,-4],[16,14],[7,22],[5,26],[0,15],[-9,37],[3,10],[-3,17],[8,20],[0,14],[5,15],[7,2],[7,15],[-3,-22],[4,-4],[4,14],[0,16],[11,5],[-3,15],[9,10],[13,-8],[6,-11],[16,-7],[6,-13],[-4,-11],[4,-6],[-1,-28],[-6,-5],[-1,-13],[-7,-2],[-3,-18],[6,-5],[7,6],[6,16],[9,5],[7,-10],[4,-37],[3,-14]],[[2704,7634],[-5,5],[-3,-17],[-6,-8],[-3,-17],[-6,-12],[15,-11],[7,0],[5,-7],[9,4],[14,3],[9,12],[24,15],[26,21],[14,21],[5,2],[-1,17],[-5,3]],[[2804,7674],[10,6],[16,2],[13,-8],[18,0],[8,5],[15,19],[-3,9],[4,4],[-7,11],[15,16],[1,7]],[[3116,7818],[10,-9]],[[3134,7784],[3,-9],[-3,-20],[-20,-16],[-6,5],[-13,-5],[1,-9],[-12,11],[-3,-22],[-14,-14],[-10,3],[-8,-8],[1,-9],[-11,-15],[-6,-22],[1,-15],[5,1],[-13,-19],[9,-7],[5,-23],[17,-8],[-14,-3],[-6,-6],[0,11],[-15,-14],[0,12],[-5,5],[-1,-17],[-12,-9],[-29,-2],[-6,-9],[-8,-1],[-23,-27],[-1,-10],[8,-1],[-2,-29],[-3,-14],[-7,-9],[-1,-11],[-12,-24],[-1,15],[-7,2],[-10,13],[3,-23],[9,-21],[1,-16],[-10,-31],[-7,-13],[-8,-30],[-2,11],[4,20],[6,17],[-6,-2],[1,9],[-13,21],[-1,17],[4,11],[-2,15],[11,15],[-5,0],[-11,-10],[2,-16],[-4,-6],[0,-23],[4,-6],[1,-20],[-9,11],[-8,-2],[9,-4],[11,-13],[-2,-17],[-6,3],[8,-12],[-7,-12],[6,-8],[-4,-8],[12,-4],[5,-35],[7,-23],[-5,9],[-6,38],[-2,-15],[6,-17],[-9,5],[0,-7],[-15,-4],[-2,-6],[15,3],[13,-8],[-1,-17],[-3,2],[-5,-13],[-13,1],[-2,9],[-4,-8],[7,-6],[-2,-11],[-11,-8],[17,-2],[-7,-11],[-15,-4],[-15,-18],[-9,-27],[-11,1],[-13,-12],[-5,-10],[-4,-21],[-22,-32],[-14,-8],[1,-8],[-12,-15],[1,-5],[-11,-14],[-3,-12],[2,-18],[-4,-5],[-3,-19],[8,-63],[9,-38],[9,-26],[-5,0],[0,-10],[18,-75],[3,-31],[-2,-12],[-1,-28],[-4,-11],[-4,-29],[-12,-1],[-7,-4],[0,14],[-6,25],[-6,7],[-6,0],[-3,31],[-6,5],[0,20],[-7,-2],[-6,21],[-3,18],[7,15],[-1,8],[-7,6],[0,-19],[-5,8],[2,21],[4,14],[0,26],[-4,16],[-7,0],[-10,20],[-6,20],[-11,14],[-10,-4],[-10,-15],[-16,-5],[0,7],[-11,20],[-22,14],[-15,-1],[-2,9],[-4,-11],[-14,-5],[-4,7],[-1,16],[-3,2],[-2,-22],[-5,5],[-5,-5],[-10,6],[-14,-7],[-7,-9],[-11,7],[-4,7],[-8,-12],[2,-7],[10,-1],[3,4],[6,-14],[5,12],[3,-3],[-8,-29],[4,-8],[11,-5],[3,-9],[-4,-9],[-3,10],[-15,9],[2,4],[-12,11],[4,-9],[-2,-16],[-10,12],[-8,-14],[-15,9],[0,13],[-7,3],[-3,12],[-6,5],[-9,-8],[4,-6],[-13,-2],[-21,13],[-16,-5],[2,17],[-8,-18],[-17,-13],[-1,19],[-8,-5],[-1,-9],[4,-12],[-8,-12],[1,-4],[-14,-18],[-16,-9],[-12,8],[1,-9],[6,-8],[-7,-6],[-5,6],[1,-12],[-12,-8],[1,-14],[-7,-33],[-3,-26],[7,-32],[1,-16],[3,-1]],[[2245,6713],[1,7],[-9,21]],[[2193,6879],[-7,10]],[[1746,7056],[-4,10],[-2,27],[-8,16],[-15,18],[-6,2],[-3,12],[-9,0],[-10,6],[-10,18],[-21,3],[-9,5],[0,33],[-7,5],[0,12],[-12,15],[-5,18],[-9,13],[-4,23],[5,9],[-3,11],[-6,-1],[-8,13],[-3,21],[3,5],[9,-11],[-10,29],[8,6],[-7,6],[-2,-19],[-16,13],[5,3],[-7,20],[-7,6],[-10,20],[1,10],[-4,16],[2,10],[-2,15],[-7,17],[-8,9],[0,19],[8,15],[-2,17],[3,16],[-2,16],[-5,5],[3,12],[-5,8],[-1,32],[-5,10],[9,41],[4,25],[2,52],[2,11],[1,62],[13,7],[-14,-2],[1,29],[-4,-2],[6,13],[-7,6],[-10,44],[-7,20],[6,11],[15,-11],[24,0],[7,-6],[4,-14],[-9,-15],[12,8],[2,-20],[-7,-10],[2,-4],[10,14],[-1,29],[5,8],[-5,18],[-9,6],[8,12],[-10,16],[1,6]],[[60,8169],[1,-9],[-11,9],[10,0]],[[80,8161],[-11,0],[12,11],[-1,-11]],[[96,8175],[2,-14],[-10,0],[1,14],[7,0]],[[177,8186],[18,-5],[-12,-3],[-15,5],[9,3]],[[162,8200],[5,-4],[-4,-12],[-7,-4],[-27,-2],[22,6],[9,7],[-7,4],[9,5]],[[9827,8206],[-2,-8],[-9,2],[11,6]],[[9802,8235],[12,-10],[-11,-5],[-1,15]],[[332,8268],[5,-12],[-32,-29],[11,24],[7,1],[-1,9],[10,7]],[[367,8291],[6,-8],[9,8],[-9,-15],[8,1],[-14,-16],[-4,1],[-20,-13],[-6,4],[19,9],[1,25],[10,4]],[[391,8303],[7,-5],[-10,-3],[3,8]],[[451,8354],[5,-1],[6,-16],[-8,-9],[-16,0],[-4,-9],[-14,-3],[-3,11],[7,3],[10,16],[3,-2],[14,10]],[[1304,8361],[8,-30],[-14,25],[6,5]],[[558,8363],[-9,-20],[4,19],[5,1]],[[1355,8404],[7,-16],[-1,-16],[-6,-11],[-13,9],[-5,8],[5,20],[13,6]],[[1295,8417],[2,-9],[-14,-4],[5,11],[7,2]],[[1319,8419],[9,-1],[0,-12],[-13,5],[4,8]],[[1289,8428],[10,-1],[4,-16],[13,-7],[9,-30],[9,-9],[-1,-33],[-16,17],[2,8],[-21,10],[8,20],[-11,-1],[6,13],[-3,17],[-9,2],[0,10]],[[1315,8433],[-5,-12],[-6,8],[11,4]],[[1328,8428],[4,-13],[-9,9],[0,12],[5,-8]],[[1308,8454],[9,-14],[-10,-3],[1,17]],[[1278,8457],[7,-4],[1,-11],[-6,-6],[-6,-28],[-3,4],[0,20],[-4,26],[11,-1]],[[1283,8470],[24,-10],[-2,-17],[-9,13],[7,-18],[-16,-4],[0,23],[-10,9],[6,4]],[[745,8475],[8,0],[-14,-10],[6,10]],[[1234,8479],[-1,-12],[-6,-2],[-1,19],[8,-5]],[[1237,8491],[8,2],[9,-14],[7,-29],[-1,-30],[-5,0],[-13,33],[-1,15],[-10,18],[6,5]],[[749,8519],[11,0],[7,-8],[-2,-10],[8,0],[-4,-10],[-18,4],[10,-7],[-18,-9],[-14,-22],[-10,-6],[6,10],[-12,-1],[-12,22],[3,14],[7,7],[10,0],[7,-19],[-4,28],[5,5],[16,-5],[-3,10],[7,-3]],[[1229,8536],[23,-12],[-1,-13],[-7,-1],[-18,12],[14,-15],[13,1],[1,-16],[-7,0],[-19,17],[7,-17],[-4,-6],[-8,6],[-1,10],[-12,12],[1,20],[18,2]],[[1252,8544],[6,-11],[14,-6],[8,-16],[-2,-5],[2,-21],[-19,-19],[-1,12],[4,10],[-5,13],[-7,43]],[[761,8550],[18,-11],[-6,-8],[-18,-4],[-10,2],[1,9],[10,1],[5,11]],[[913,8659],[5,-3],[-25,-29],[20,32]],[[385,8661],[13,-6],[2,-22],[-19,-5],[-10,2],[-19,13],[-4,7],[16,0],[9,9],[12,2]],[[929,8665],[13,-4],[-15,-9],[2,13]],[[897,8667],[-2,-19],[-4,10],[6,9]],[[231,8857],[0,-6],[17,-7],[20,7],[23,-20],[21,-2],[-2,-9],[-15,1],[-9,-13],[-3,10],[-28,19],[-17,-8],[-13,10],[6,18]],[[1387,8402],[-3,-8],[4,-28],[-10,-21],[-9,-8],[-7,2],[-3,23],[6,6],[-1,24],[-15,16],[-8,-7],[-7,-22],[-9,13],[7,4],[5,24],[-18,22],[-11,25],[-19,8],[12,9],[-11,10],[-3,12],[14,-6],[-15,12],[-15,23],[-16,11],[-4,24],[-6,1],[-1,17],[-6,-11],[7,-17],[1,-24],[-13,11],[-8,-2],[2,13],[-8,12],[-3,-4],[-17,8],[19,-18],[2,-12],[-9,-4],[-20,5],[-23,23],[-9,16],[-34,19],[-11,9],[12,10],[-5,11],[-18,-12],[-9,0],[-21,9],[3,11],[-13,-5],[-31,8],[-30,-6],[-12,12],[-16,5],[3,18],[-11,-14],[-21,5],[9,13],[-18,-1],[-16,19],[-12,1],[-2,-7],[-15,-3],[-3,6],[9,19],[-17,-18],[2,-20],[8,-8],[-6,-3],[-8,-27],[-18,1],[-5,-5],[-2,13],[-12,-25],[-13,3],[-7,-13],[-19,-17],[-16,-2],[-6,6],[3,9],[19,10],[2,8],[-11,-6],[-10,7],[4,16],[8,10],[5,19],[-5,8],[27,21],[6,-6],[18,3],[-14,10],[4,5],[-19,4],[-15,-15],[-9,-2],[-20,-27],[-7,-16],[-11,-2],[9,-10],[-18,-24],[-11,0],[-4,-11],[-9,-5],[-3,-20],[10,3],[13,-8],[2,-6],[-11,-12],[-5,0],[-14,-31],[-4,7],[-2,-11],[-12,1],[-9,-17],[-9,2],[-2,-13],[-10,-1],[-14,-15],[7,-5],[-7,-12],[-5,4],[-12,-16],[-17,-5],[-2,-11],[-13,-1],[-4,-8],[7,-10],[-10,-4],[-1,-7],[-22,-6],[-5,-17],[-6,16],[-20,-21],[-10,2],[-12,-10],[-5,2],[6,12],[-10,1],[-6,-22],[-9,-11],[-12,8],[-4,-14],[-7,2],[-9,-9],[0,18],[10,3],[22,30],[12,12],[9,3],[34,-7],[-10,9],[5,17],[16,15],[24,17],[9,-4],[-1,15],[10,16],[18,15],[2,46],[12,18],[5,16],[-8,-7],[-25,-13],[-11,12],[1,10],[-9,-10],[4,-20],[-11,-2],[-14,29],[-8,-10],[-12,17],[-19,-11],[-20,-18],[-11,4],[11,7],[-1,13],[6,7],[-12,2],[0,15],[7,6],[-20,46],[-1,-17],[-16,-8],[-23,-4],[-9,6],[-13,23],[-19,12],[20,19],[18,-3],[7,-12],[9,7],[-4,7],[-29,2],[-20,20],[-7,-6],[-9,14],[0,21],[-6,7],[15,2],[-4,13],[18,26],[8,-3],[-3,14],[5,17],[11,0],[-8,7],[7,5],[17,0],[2,-11],[17,1],[20,24],[25,-1],[18,17],[-6,30],[-13,9],[10,4],[9,13],[-10,12],[-41,-24],[-17,-5],[-12,9],[-18,0],[-19,-8],[-33,8],[-8,6],[3,12],[-11,10],[7,9],[13,2],[-38,8],[-18,10],[37,28],[24,9],[16,13],[16,7],[29,2],[-7,-11],[7,-19],[26,2],[24,-8],[11,18],[13,-3],[-13,10],[-11,-2],[-2,11],[-15,10],[-5,9],[9,3],[7,-17],[12,-11],[10,4],[14,-9],[16,2],[-3,14],[-23,0],[-9,-7],[-10,10],[2,20],[-23,-2],[-30,5],[-10,27],[-34,25],[-20,9],[-16,11],[9,17],[0,14],[16,-2],[37,4],[19,11],[15,16],[2,19],[29,33],[26,0],[45,27],[39,4],[21,14],[12,13],[33,-7],[-12,-12],[11,-6],[16,16],[13,-7],[2,-12],[19,5],[38,-1],[9,-4],[-12,-15],[24,0],[-6,-6],[32,3],[11,-5],[30,5],[31,-8],[27,-11],[40,0],[30,-12],[40,9],[52,-27],[12,0]],[[2912,6333],[-2,-4]],[[2914,6329],[-1,4]],[[6651,7782],[-7,-26],[12,-19],[-3,-12],[11,5],[3,8],[-2,16],[3,11]],[[6601,7610],[-7,11],[-5,-2],[-4,-22]],[[6627,7805],[-10,-35],[2,-18],[4,-10],[9,17],[-3,20],[3,6],[-1,16]],[[3301,5940],[-4,4],[5,8],[-1,-12]],[[3313,5694],[1,-6],[-5,-8],[-9,-2],[1,7],[12,9]],[[3303,5691],[4,12],[2,-5],[-6,-7]],[[3228,5816],[-8,-8],[-9,6],[4,7],[6,-5],[4,10],[3,-10]],[[3018,5865],[-3,-7],[-14,-7],[0,-13],[10,-38],[-1,-16],[-4,-6],[-10,-30],[5,-18],[6,-7],[-1,-15],[6,-5],[9,7],[5,10],[-1,32],[-11,30],[-2,23],[3,10],[4,0],[12,13],[18,8],[5,9],[8,-2],[-2,13],[-11,-5],[-2,13],[2,16],[5,5],[6,-10],[2,-22],[4,-10],[12,3],[15,-10],[7,-12],[4,-15],[-2,-7],[5,-15],[8,-1],[17,4],[6,4],[21,2],[11,-20],[11,-9],[11,-5],[8,2],[4,9],[5,0],[2,8],[20,5],[-5,5],[-9,1],[10,6],[7,-3],[11,6],[12,1],[16,-4],[8,4],[-2,-6],[-10,-6],[-16,0],[1,-9],[5,-5],[1,-12],[-9,-1],[5,-4],[8,8],[5,-25],[2,17],[11,-10],[7,-3],[-2,7],[13,-19],[4,1],[7,-12],[-9,-24],[-3,-22],[-12,0],[10,-11],[3,6],[14,6],[6,-4],[3,6],[9,-4]],[[7888,5785],[0,-17],[-4,12],[4,5]],[[7999,6420],[-7,1],[-4,-12],[-7,-3],[1,-12],[-6,-6],[-5,4],[-9,-2],[4,-16],[-8,-8],[2,-17],[-7,-4],[-4,-11],[-7,-4],[-3,-15],[-1,-23],[-5,-13],[7,-30],[7,-15],[11,-17],[-1,-15],[8,-21],[9,-14],[4,-12],[16,-29],[6,-2],[16,-47],[8,-11],[1,-21],[5,-18],[-2,-5],[6,-25],[0,-35],[2,-3],[0,-23],[3,-13],[-6,-10],[0,-42],[-3,-5],[4,-7],[-4,-10],[-2,4],[0,-16],[-7,-2],[-2,-8],[-4,0],[-8,-14],[-6,-1],[-2,-13],[-5,0],[-11,-13],[-13,0],[-5,12],[1,-23],[-11,2],[11,-9],[-4,-11],[-6,4],[7,-11],[-3,-2],[-12,24],[0,-5],[10,-18],[2,-11],[-5,-6],[-10,15],[4,-19],[-1,-6],[-17,-13],[-12,-29],[-11,-2],[5,9],[-2,10],[0,36],[2,17],[6,7],[-10,15],[-5,-5],[-3,16]],[[9706,4050],[-7,13],[4,7],[3,-20]],[[9699,4104],[2,-14],[-8,6],[0,12],[6,-4]],[[9675,4172],[7,-8],[-6,-8],[-6,7],[5,9]],[[9671,4228],[8,-15],[-7,1],[-1,14]],[[9675,4243],[-6,-2],[-6,7],[7,9],[5,-14]],[[9650,4255],[10,-14],[1,-7],[-10,-6],[-4,27],[-5,1],[1,12],[4,-1],[3,-12]],[[9672,4262],[-3,21],[1,9],[3,-20],[-1,-10]],[[9662,4292],[-5,2],[9,9],[-4,-11]],[[9671,4298],[-2,1],[-1,24],[2,-2],[1,-23]],[[9633,4310],[4,2],[0,11],[5,-11],[3,-23],[-11,-7],[-7,15],[1,11],[-3,15],[1,17],[5,-11],[2,-19]],[[9653,4368],[1,-9],[-5,0],[4,9]],[[9654,4385],[-4,-3],[-1,10],[5,-7]],[[5917,7177],[-8,1]],[[233,4380],[5,-6],[-14,2],[-4,7],[7,5],[6,-8]],[[213,4406],[3,-6],[-1,-12],[-9,0],[-5,15],[12,3]],[[6488,5914],[7,-6],[7,6],[10,-9],[-9,-11],[-10,-3],[-6,2],[-5,12],[6,9]],[[6474,6141],[-14,-9],[-10,-18],[-2,-12],[2,-20],[-10,-7],[-13,-15],[-23,-11],[-11,-11],[-4,0],[-25,-18],[-3,-12],[-8,-16],[-6,-3],[-14,3],[-10,-9],[-6,-13],[-15,-8],[-5,-6],[-14,0],[-16,-6],[-7,-15],[-15,-17],[-7,3],[-4,-8],[-14,-5],[-10,9],[-3,-4],[-7,35],[2,25],[-6,21],[-2,16],[-3,43],[-6,7],[4,2],[-3,17],[3,18],[-1,29]],[[5913,3637],[-1,-16],[-5,-23],[-3,-38],[-5,-21],[-10,-19],[-7,-3],[-13,-27],[-21,-68],[-4,-16],[-15,-32],[-4,-4],[-16,-28],[-9,-21],[-13,-22],[-25,-35],[-27,-26],[-15,4],[-9,-9],[0,-11],[-17,5],[-4,-12],[-11,1],[-8,6],[-16,4],[-6,-7],[-23,6],[-10,-4],[-12,-19],[-7,3],[-6,-5],[-11,4],[-1,-6],[-11,0],[-14,-20],[-9,3],[-9,9],[0,11],[-6,4],[-8,-2],[0,17],[-10,-2],[0,-13],[-4,19],[5,10],[-2,12],[-7,16],[-4,20],[-4,-1],[1,18],[7,-2],[4,8],[1,20],[-2,22],[-4,17],[-9,20],[-7,28],[-8,24],[-6,42],[-6,29],[-7,15],[-3,15]],[[5815,3905],[12,3],[14,-12],[15,3],[13,-7]],[[5844,4282],[-15,1],[-13,-5],[-15,-18],[0,-21],[-3,-8]],[[5798,4231],[-3,3],[-13,-9],[-5,-13],[-12,-14],[-13,-38],[-2,-11]],[[5750,4149],[-9,-7],[-14,11],[-7,-7],[-7,11],[-12,1]],[[5792,4643],[5,5],[9,23],[3,15],[-7,8]],[[5849,4709],[-4,-14],[7,-1],[9,-18],[5,4],[-1,8]],[[5750,4149],[10,22],[5,5],[4,17],[11,9],[0,11],[8,0],[8,9],[1,-7],[8,12],[-7,4]]],"type":"Topology","objects":{"units":{"geometries":[{"arcs":[[0,1,2,3,4,5]],"type":"Polygon","id":"AFG","properties":{"name":"Afghanistan"}},{"arcs":[[[6,7,8,9]],[[10,11,12]]],"type":"MultiPolygon","id":"AGO","properties":{"name":"Angola"}},{"arcs":[[[13,14]],[[15,16]],[[17,18,19,20,21,22,23,24,25,26,27,28,29,30]]],"type":"MultiPolygon","id":"ALB","properties":{"name":"Albania"}},{"arcs":[[[31]]],"type":"MultiPolygon","id":"ALD","properties":{"name":"Aland"}},{"arcs":[[32,33]],"type":"Polygon","id":"AND","properties":{"name":"Andorra"}},{"arcs":[[[34]],[[35,36,37,38,39],[40]]],"type":"MultiPolygon","id":"ARE","properties":{"name":"United Arab Emirates"}},{"arcs":[[[41,42]],[[43,44]],[[45,46,47,48,49,50]]],"type":"MultiPolygon","id":"ARG","properties":{"name":"Argentina"}},{"arcs":[[[51]],[[52,53,54,55,56],[57],[58]]],"type":"MultiPolygon","id":"ARM","properties":{"name":"Armenia"}},{"arcs":[[[59]],[[60]],[[61]],[[62]],[[63]],[[64]],[[65]],[[66]],[[67]],[[68]],[[69]],[[70]],[[71]],[[72]],[[73]],[[74]],[[75]],[[76]],[[77]],[[78]],[[79]],[[80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90]],[[91]],[[92]],[[93]],[[94]],[[95]],[[96]],[[97]],[[98]],[[99]],[[100]],[[101]],[[102]],[[103]],[[104]],[[105]],[[106]],[[107]],[[108]],[[109]],[[110]],[[111]],[[112]],[[113]],[[114]],[[115]],[[116]],[[117]],[[118]],[[119]],[[120]]],"type":"MultiPolygon","id":"ATA","properties":{"name":"Antarctica"}},{"arcs":[[[121]]],"type":"MultiPolygon","id":"ATF","properties":{"name":"Fr. S. Antarctic Lands"}},{"arcs":[[[122]],[[123]],[[124]],[[125]],[[126]],[[127]],[[128]],[[129]],[[130]],[[131]],[[132]],[[133]],[[134]],[[135]],[[136]],[[137]],[[138]],[[139]],[[140]]],"type":"MultiPolygon","id":"AUS","properties":{"name":"Australia"}},{"arcs":[[141,142,143,144,145,146,147,148,149,150]],"type":"Polygon","id":"AUT","properties":{"name":"Austria"}},{"arcs":[[[151,152,-55]],[[-59]],[[-58]],[[153,154,155,-53,156],[-52]]],"type":"MultiPolygon","id":"AZE","properties":{"name":"Azerbaijan"}},{"arcs":[[157,158,159,160]],"type":"Polygon","id":"BDI","properties":{"name":"Burundi"}},{"arcs":[[161,162,163,164,165,166,167]],"type":"Polygon","id":"BEL","properties":{"name":"Belgium"}},{"arcs":[[168,169,170,171,172]],"type":"Polygon","id":"BEN","properties":{"name":"Benin"}},{"arcs":[[173,-172,174,175,176,177]],"type":"Polygon","id":"BFA","properties":{"name":"Burkina Faso"}},{"arcs":[[[178]],[[179]],[[180,181,182]]],"type":"MultiPolygon","id":"BGD","properties":{"name":"Bangladesh"}},{"arcs":[[183,184,185,186,187,188]],"type":"Polygon","id":"BGR","properties":{"name":"Bulgaria"}},{"arcs":[[189]],"type":"Polygon","id":"BHR","properties":{"name":"Bahrain"}},{"arcs":[[[190]],[[191]],[[192]],[[193]],[[194]],[[195]],[[196]],[[197]],[[198]],[[199]],[[200]]],"type":"MultiPolygon","id":"BHS","properties":{"name":"Bahamas"}},{"arcs":[[201,202,203,204,205]],"type":"Polygon","id":"BIH","properties":{"name":"Bosnia and Herz."}},{"arcs":[[206,207,208,209,210]],"type":"Polygon","id":"BLR","properties":{"name":"Belarus"}},{"arcs":[[[211,212,213]]],"type":"MultiPolygon","id":"BLZ","properties":{"name":"Belize"}},{"arcs":[[[214,215]],[[216,-51,217,218,219,220,221]]],"type":"MultiPolygon","id":"BOL","properties":{"name":"Bolivia"}},{"arcs":[[[222]],[[223]],[[224]],[[225]],[[226]],[[227]],[[228]],[[229]],[[230]],[[231]],[[232]],[[233]],[[234]],[[235]],[[236]],[[237]],[[238,239,240,241,242,243,-47,244,245,246,-222,247,248,249,250]]],"type":"MultiPolygon","id":"BRA","properties":{"name":"Brazil"}},{"arcs":[[251]],"type":"Polygon","id":"BRB","properties":{"name":"Barbados"}},{"arcs":[[[252,253]],[[254,255]]],"type":"MultiPolygon","id":"BRN","properties":{"name":"Brunei"}},{"arcs":[[256,257]],"type":"Polygon","id":"BTN","properties":{"name":"Bhutan"}},{"arcs":[[258,259,260]],"type":"Polygon","id":"BWA","properties":{"name":"Botswana"}},{"arcs":[[261,262,263,264,265,266]],"type":"Polygon","id":"CAF","properties":{"name":"Central African Rep."}},{"arcs":[[[267]],[[268]],[[269]],[[270]],[[271]],[[272]],[[273]],[[274,275,276,277]],[[278]],[[279]],[[280]],[[281]],[[282]],[[283]],[[284]],[[285]],[[286]],[[287]],[[288]],[[289]],[[290]],[[291]],[[292]],[[293]],[[294]],[[295]],[[296]],[[297]],[[298]],[[299]],[[300]],[[301]],[[302]],[[303]],[[304]],[[305]],[[306]],[[307]],[[308]],[[309]],[[310]],[[311]],[[312]],[[313]],[[314]],[[315]],[[316]],[[317]],[[318]],[[319]],[[320]],[[321]],[[322]],[[323]],[[324]],[[325]],[[326]],[[327]],[[328]],[[329]],[[330]],[[331]],[[332]],[[333,334,335,336,337,338,339,340,341,342,343,344,345,-346,346,347]],[[348]],[[349]],[[350]],[[351]],[[352]],[[353]],[[354]],[[355]],[[356]],[[357]],[[358]],[[359]],[[360]],[[361]],[[362]],[[363]],[[364]],[[365]],[[366]],[[367]],[[368]],[[369]],[[370]],[[371]],[[372]],[[373]],[[374]],[[375]],[[376]],[[377]],[[378]],[[379]],[[380]],[[381]],[[382]],[[383]],[[384]]],"type":"MultiPolygon","id":"CAN","properties":{"name":"Canada"}},{"arcs":[[385,386,387,-148,388,-146,389,390,391,392,393]],"type":"Polygon","id":"CHE","properties":{"name":"Switzerland"}},{"arcs":[[[394]],[[395]],[[396]],[[397]],[[398]],[[399]],[[400]],[[401]],[[402]],[[-44,403,-42,404]],[[405]],[[406]],[[407]],[[408]],[[409]],[[410]],[[411]],[[412]],[[413]],[[414]],[[415]],[[416]],[[417]],[[418]],[[419]],[[420]],[[421]],[[422]],[[423]],[[424]],[[425]],[[426]],[[427]],[[428]],[[429]],[[430]],[[431]],[[432]],[[433]],[[434]],[[435]],[[-50,436,437,-218]]],"type":"MultiPolygon","id":"CHL","properties":{"name":"Chile"}},{"arcs":[[[438]],[[439]],[[440]],[[441]],[[442,443,444,445,446,447,448,449,450,451,-258,452,453,454,455,456,-1,457,458,459,460,461,462,463,464]]],"type":"MultiPolygon","id":"CHN","properties":{"name":"China"}},{"arcs":[[[465,466]],[[-177,467,468,469,470,471]]],"type":"MultiPolygon","id":"CIV","properties":{"name":"C\u00f4te d'Ivoire"}},{"arcs":[[[472,-266,473,474,475,476,477,478,479]],[[480,481]]],"type":"MultiPolygon","id":"CMR","properties":{"name":"Cameroon"}},{"arcs":[[[482,483,484,485]],[[486,487,488,489]],[[490,491,492,493]]],"type":"MultiPolygon","id":"CNM","properties":{"name":"Cyprus U.N. Buffer Zone"}},{"arcs":[[[494]],[[495,496,497,498,499,500,501,502,503,-160,504,505,506,507,-10,508,-11,509,-264]]],"type":"MultiPolygon","id":"COD","properties":{"name":"Dem. Rep. Congo"}},{"arcs":[[-510,-13,510,511,-474,-265]],"type":"Polygon","id":"COG","properties":{"name":"Congo"}},{"arcs":[[[512,-249,513,514,515,516,517]]],"type":"MultiPolygon","id":"COL","properties":{"name":"Colombia"}},{"arcs":[[[518]],[[519]]],"type":"MultiPolygon","id":"COM","properties":{"name":"Comoros"}},{"arcs":[[[520]],[[521]],[[522]],[[523]]],"type":"MultiPolygon","id":"CPV","properties":{"name":"Cape Verde"}},{"arcs":[[[524,525,526,527]]],"type":"MultiPolygon","id":"CRI","properties":{"name":"Costa Rica"}},{"arcs":[[[528]],[[529]],[[530]],[[531,532,533,534]]],"type":"MultiPolygon","id":"CUB","properties":{"name":"Cuba"}},{"arcs":[[535]],"type":"Polygon","id":"CUW","properties":{"name":"Cura\u00e7ao"}},{"arcs":[[[536,-488]],[[-486,537,-494,538]]],"type":"MultiPolygon","id":"CYN","properties":{"name":"N. Cyprus"}},{"arcs":[[[539,540]],[[541]],[[542,543,-484]],[[544,545,546,547,-490,548,-492]]],"type":"MultiPolygon","id":"CYP","properties":{"name":"Cyprus"}},{"arcs":[[549,550,-151,551]],"type":"Polygon","id":"CZE","properties":{"name":"Czech Rep."}},{"arcs":[[[-387,552]],[[553,554]],[[555]],[[556,557,-552,-150,558,-394,559,560,-162,561,562,563]]],"type":"MultiPolygon","id":"DEU","properties":{"name":"Germany"}},{"arcs":[[564,565,566,567,568,569]],"type":"Polygon","id":"DJI","properties":{"name":"Djibouti"}},{"arcs":[[570]],"type":"Polygon","id":"DMA","properties":{"name":"Dominica"}},{"arcs":[[[571]],[[572]],[[573]],[[574]],[[575]],[[576]],[[577]],[[-564,578]]],"type":"MultiPolygon","id":"DNK","properties":{"name":"Denmark"}},{"arcs":[[[579,580,581,582,583,584]]],"type":"MultiPolygon","id":"DOM","properties":{"name":"Dominican Rep."}},{"arcs":[[585,586,587,588,589,590,591,592]],"type":"Polygon","id":"DZA","properties":{"name":"Algeria"}},{"arcs":[[[593]],[[594]],[[595]],[[596]],[[597]],[[598]],[[599,600,-515]]],"type":"MultiPolygon","id":"ECU","properties":{"name":"Ecuador"}},{"arcs":[[[601,602,603,604,605,606]]],"type":"MultiPolygon","id":"EGY","properties":{"name":"Egypt"}},{"arcs":[[[607]],[[-569,608,609,610]]],"type":"MultiPolygon","id":"ERI","properties":{"name":"Eritrea"}},{"arcs":[[-485,-544,611,-541,612,-545,-491,-538],[-542]],"type":"Polygon","id":"ESB","properties":{"name":"Dhekelia"}},{"arcs":[[[613]],[[614]],[[615]],[[616]],[[617]],[[618]],[[619,620]],[[621,622]],[[623]],[[624]],[[625]],[[626]],[[627,-33,628,629,630,631,632,633]]],"type":"MultiPolygon","id":"ESP","properties":{"name":"Spain"}},{"arcs":[[[634]],[[635]],[[636,637,638,639,640,641,642,643,644]]],"type":"MultiPolygon","id":"EST","properties":{"name":"Estonia"}},{"arcs":[[-568,645,-566,646,647,648,649,650,-609]],"type":"Polygon","id":"ETH","properties":{"name":"Ethiopia"}},{"arcs":[[[651]],[[652,653,654,655]]],"type":"MultiPolygon","id":"FIN","properties":{"name":"Finland"}},{"arcs":[[[656]],[[657]],[[658]]],"type":"MultiPolygon","id":"FJI","properties":{"name":"Fiji"}},{"arcs":[[[659]],[[660]]],"type":"MultiPolygon","id":"FLK","properties":{"name":"Falkland Is."}},{"arcs":[[[661]],[[662]],[[-240,663,664]],[[665]],[[666]],[[667]],[[668]],[[669,-560,-393,670,-391,671,672,673,674,-629,-34,-628,675,-164],[-627]]],"type":"MultiPolygon","id":"FRA","properties":{"name":"France"}},{"arcs":[[[676]],[[677]]],"type":"MultiPolygon","id":"FRO","properties":{"name":"Faeroe Is."}},{"arcs":[[[678]]],"type":"MultiPolygon","id":"FSM","properties":{"name":"Micronesia"}},{"arcs":[[[-512,679,680,-475]]],"type":"MultiPolygon","id":"GAB","properties":{"name":"Gabon"}},{"arcs":[[[681]],[[682]],[[683,684]],[[685]],[[686]],[[687]],[[688]],[[689]],[[690]],[[691]],[[692]],[[693]],[[694]],[[695]]],"type":"MultiPolygon","id":"GBR","properties":{"name":"United Kingdom"}},{"arcs":[[-157,-57,696,697,698]],"type":"Polygon","id":"GEO","properties":{"name":"Georgia"}},{"arcs":[[699,700,-466,701,-468,-176]],"type":"Polygon","id":"GHA","properties":{"name":"Ghana"}},{"arcs":[[-631,702]],"type":"Polygon","id":"GIB","properties":{"name":"Gibraltar"}},{"arcs":[[703,-471,704,705,706,707,708]],"type":"Polygon","id":"GIN","properties":{"name":"Guinea"}},{"arcs":[[709,710]],"type":"Polygon","id":"GMB","properties":{"name":"Gambia"}},{"arcs":[[[711]],[[712,713,-708]]],"type":"MultiPolygon","id":"GNB","properties":{"name":"Guinea-Bissau"}},{"arcs":[[[-681,714,-476]],[[715]]],"type":"MultiPolygon","id":"GNQ","properties":{"name":"Eq. Guinea"}},{"arcs":[[[716]],[[717]],[[718]],[[719]],[[720]],[[721]],[[722]],[[723]],[[724]],[[725]],[[726]],[[727]],[[728]],[[729]],[[730]],[[731]],[[732,-186,733,734,-27,735,-25,736]]],"type":"MultiPolygon","id":"GRC","properties":{"name":"Greece"}},{"arcs":[[[737]]],"type":"MultiPolygon","id":"GRD","properties":{"name":"Grenada"}},{"arcs":[[[738]],[[739]],[[740]],[[741]],[[742]],[[743]],[[744]],[[745]],[[746]],[[747]],[[748]],[[749]],[[750]],[[751]],[[752]],[[753]],[[754]],[[755]],[[756]],[[757]],[[758]],[[759]],[[760]],[[761]],[[762]],[[763]]],"type":"MultiPolygon","id":"GRL","properties":{"name":"Greenland"}},{"arcs":[[-213,764,765,766,767,768]],"type":"Polygon","id":"GTM","properties":{"name":"Guatemala"}},{"arcs":[[769]],"type":"Polygon","id":"GUM","properties":{"name":"Guam"}},{"arcs":[[[770,-251,771,772]]],"type":"MultiPolygon","id":"GUY","properties":{"name":"Guyana"}},{"arcs":[[[773,-447]]],"type":"MultiPolygon","id":"HKG","properties":{"name":"Hong Kong"}},{"arcs":[[774]],"type":"Polygon","id":"HMD","properties":{"name":"Heard I. and McDonald Is."}},{"arcs":[[[775,776,777,-766,778]]],"type":"MultiPolygon","id":"HND","properties":{"name":"Honduras"}},{"arcs":[[[-204,779,780]],[[781]],[[782]],[[783]],[[784]],[[785,786,-206,787,788]]],"type":"MultiPolygon","id":"HRV","properties":{"name":"Croatia"}},{"arcs":[[[-582,789]],[[790]],[[-584,791,-580,792]]],"type":"MultiPolygon","id":"HTI","properties":{"name":"Haiti"}},{"arcs":[[793,794,795,-786,796,-143,797]],"type":"Polygon","id":"HUN","properties":{"name":"Hungary"}},{"arcs":[[[798]],[[799]],[[800]],[[801,802,803,804]],[[805]],[[806]],[[807]],[[808]],[[809]],[[810]],[[811]],[[812]],[[813]],[[814]],[[815]],[[816]],[[817]],[[818]],[[819]],[[820]],[[821]],[[822]],[[823]],[[824]],[[825]],[[826]],[[827]],[[828]],[[829]],[[830]],[[831]],[[832]],[[833]],[[834]],[[835]],[[836]],[[837]],[[838]],[[839]],[[840]],[[841]],[[842]],[[843]],[[844]],[[845]],[[846]],[[847]],[[848]],[[849]],[[850]],[[851]],[[852]],[[853]],[[854]],[[855]],[[856]],[[857,858]],[[859]],[[860]],[[861]],[[862]],[[863]],[[864]],[[865]],[[866]],[[867]],[[868]],[[869]],[[870]],[[871]],[[872]],[[873]],[[874]],[[875]],[[876]],[[877]],[[878]],[[879]],[[880]],[[881,882]],[[883]],[[884,885]],[[886]],[[887]]],"type":"MultiPolygon","id":"IDN","properties":{"name":"Indonesia"}},{"arcs":[[888]],"type":"Polygon","id":"IMN","properties":{"name":"Isle of Man"}},{"arcs":[[[889]],[[890]],[[891]],[[892]],[[893,-453,-257,-452,894,-183,895,896,897,-455]]],"type":"MultiPolygon","id":"IND","properties":{"name":"India"}},{"arcs":[[[-684,898]]],"type":"MultiPolygon","id":"IRL","properties":{"name":"Ireland"}},{"arcs":[[[899]],[[-54,-156,900,901,-3,902,903,904,905,-152]]],"type":"MultiPolygon","id":"IRN","properties":{"name":"Iran"}},{"arcs":[[-905,906,907,908,909,910,911,912,913]],"type":"Polygon","id":"IRQ","properties":{"name":"Iraq"}},{"arcs":[[[914]]],"type":"MultiPolygon","id":"ISL","properties":{"name":"Iceland"}},{"arcs":[[915,916,917,918,919,920,921,-603,922,923,924,925]],"type":"Polygon","id":"ISR","properties":{"name":"Israel"}},{"arcs":[[[926]],[[927]],[[928,929,-672,-390,-145],[930],[931]]],"type":"MultiPolygon","id":"ITA","properties":{"name":"Italy"}},{"arcs":[[932]],"type":"Polygon","id":"JAM","properties":{"name":"Jamaica"}},{"arcs":[[933,934,-921,935,-919,936,937,-916,938,-910]],"type":"Polygon","id":"JOR","properties":{"name":"Jordan"}},{"arcs":[[[939]],[[940]],[[941]],[[942]],[[943]],[[944]],[[945]],[[946]],[[947]],[[948]],[[949]],[[950]],[[951]]],"type":"MultiPolygon","id":"JPN","properties":{"name":"Japan"}},{"arcs":[[952]],"type":"Polygon","id":"KAB","properties":{"name":"Baikonur"}},{"arcs":[[-898,953,-456]],"type":"Polygon","id":"KAS","properties":{"name":"Siachen Glacier"}},{"arcs":[[[954,955]],[[-460,956,957,958,959,960,961,962],[-953]]],"type":"MultiPolygon","id":"KAZ","properties":{"name":"Kazakhstan"}},{"arcs":[[[-649,963,964,965,966,967,968]]],"type":"MultiPolygon","id":"KEN","properties":{"name":"Kenya"}},{"arcs":[[-459,969,970,-957],[971],[972],[973]],"type":"Polygon","id":"KGZ","properties":{"name":"Kyrgyzstan"}},{"arcs":[[[974,975,976,977]]],"type":"MultiPolygon","id":"KHM","properties":{"name":"Cambodia"}},{"arcs":[[[978]]],"type":"MultiPolygon","id":"KIR","properties":{"name":"Kiribati"}},{"arcs":[[[979]],[[980]],[[981]],[[982,983]]],"type":"MultiPolygon","id":"KOR","properties":{"name":"Korea"}},{"arcs":[[984,-18,985,986]],"type":"Polygon","id":"XKX","properties":{"name":"Kosovo"}},{"arcs":[[[987]],[[988,-908,989]]],"type":"MultiPolygon","id":"KWT","properties":{"name":"Kuwait"}},{"arcs":[[990,-977,991,992,-450]],"type":"Polygon","id":"LAO","properties":{"name":"Lao PDR"}},{"arcs":[[-925,993,994]],"type":"Polygon","id":"LBN","properties":{"name":"Lebanon"}},{"arcs":[[-470,995,996,-705]],"type":"Polygon","id":"LBR","properties":{"name":"Liberia"}},{"arcs":[[-606,997,998,999,-587,1000,1001]],"type":"Polygon","id":"LBY","properties":{"name":"Libya"}},{"arcs":[[1002]],"type":"Polygon","id":"LCA","properties":{"name":"Saint Lucia"}},{"arcs":[[-389,-147]],"type":"Polygon","id":"LIE","properties":{"name":"Liechtenstein"}},{"arcs":[[[1003]]],"type":"MultiPolygon","id":"LKA","properties":{"name":"Sri Lanka"}},{"arcs":[[1004]],"type":"Polygon","id":"LSO","properties":{"name":"Lesotho"}},{"arcs":[[[1005,1006]],[[-210,1007,1008,1009,1010]]],"type":"MultiPolygon","id":"LTU","properties":{"name":"Lithuania"}},{"arcs":[[-561,-670,-163]],"type":"Polygon","id":"LUX","properties":{"name":"Luxembourg"}},{"arcs":[[1011,-211,-1011,1012,-644]],"type":"Polygon","id":"LVA","properties":{"name":"Latvia"}},{"arcs":[[1013,1014]],"type":"Polygon","id":"MAF","properties":{"name":"St-Martin"}},{"arcs":[[-622,1015,-620,1016,-592,1017,1018]],"type":"Polygon","id":"MAR","properties":{"name":"Morocco"}},{"arcs":[[1019,-674]],"type":"Polygon","id":"MCO","properties":{"name":"Monaco"}},{"arcs":[[1020,1021]],"type":"Polygon","id":"MDA","properties":{"name":"Moldova"}},{"arcs":[[[1022]],[[1023]]],"type":"MultiPolygon","id":"MDG","properties":{"name":"Madagascar"}},{"arcs":[[[1024]],[[1025]],[[1026]],[[1027]],[[1028]],[[1029,1030,1031,1032,1033,-214,-769,1034,1035],[1036]]],"type":"MultiPolygon","id":"MEX","properties":{"name":"Mexico"}},{"arcs":[[[-23,1037]],[[-187,-733,1038,-15,1039,-21,1040,-19,-985,1041]]],"type":"MultiPolygon","id":"MKD","properties":{"name":"Macedonia"}},{"arcs":[[1042,-178,-472,-704,1043,1044,-589]],"type":"Polygon","id":"MLI","properties":{"name":"Mali"}},{"arcs":[[[1045]],[[1046]],[[1047]],[[1048]],[[1049]],[[1050]],[[-993,1051,1052,-181,-895,-451]]],"type":"MultiPolygon","id":"MMR","properties":{"name":"Myanmar"}},{"arcs":[[1053,-986,-31,1054,-16,1055,-29,1056,-780,-203]],"type":"Polygon","id":"MNE","properties":{"name":"Montenegro"}},{"arcs":[[-464,1057,-462,1058]],"type":"Polygon","id":"MNG","properties":{"name":"Mongolia"}},{"arcs":[[[1059,1060,1061,1062,1063,1064,1065,1066,1067]]],"type":"MultiPolygon","id":"MOZ","properties":{"name":"Mozambique"}},{"arcs":[[[1068,1069,1070,-590,-1045]]],"type":"MultiPolygon","id":"MRT","properties":{"name":"Mauritania"}},{"arcs":[[[1071]]],"type":"MultiPolygon","id":"MUS","properties":{"name":"Mauritius"}},{"arcs":[[[1072,1073]],[[1074,1075]],[[1076,1077]],[[1078,1079]],[[1080,-1065,1081,1082]]],"type":"MultiPolygon","id":"MWI","properties":{"name":"Malawi"}},{"arcs":[[[1083]],[[-882,1084]],[[1085]],[[1086]],[[1087,1088]],[[-886,1089,-256,1090,-253,1091]],[[1092]]],"type":"MultiPolygon","id":"MYS","properties":{"name":"Malaysia"}},{"arcs":[[1093,-261,1094,1095,-8]],"type":"Polygon","id":"NAM","properties":{"name":"Namibia"}},{"arcs":[[[1096]],[[1097]],[[1098]]],"type":"MultiPolygon","id":"NCL","properties":{"name":"New Caledonia"}},{"arcs":[[1099,1100,-173,-174,-1043,-588,-1000]],"type":"Polygon","id":"NER","properties":{"name":"Niger"}},{"arcs":[[[1101,-478,1102,-169,-1101]]],"type":"MultiPolygon","id":"NGA","properties":{"name":"Nigeria"}},{"arcs":[[[1103,-528,1104,-776]]],"type":"MultiPolygon","id":"NIC","properties":{"name":"Nicaragua"}},{"arcs":[[[-166,1105]],[[1106]],[[-562,-168,1107],[1108]]],"type":"MultiPolygon","id":"NLD","properties":{"name":"Netherlands"}},{"arcs":[[[1109]],[[1110]],[[1111]],[[1112]],[[1113]],[[1114]],[[1115]],[[1116]],[[1117]],[[1118]],[[1119]],[[1120]],[[1121]],[[1122]],[[1123,-656,1124,1125]],[[1126]],[[1127]],[[1128]],[[1129]],[[1130]],[[1131]],[[1132]]],"type":"MultiPolygon","id":"NOR","properties":{"name":"Norway"}},{"arcs":[[-894,-454]],"type":"Polygon","id":"NPL","properties":{"name":"Nepal"}},{"arcs":[[[1133]],[[1134]],[[1135]],[[1136]],[[1137]],[[1138]]],"type":"MultiPolygon","id":"NZL","properties":{"name":"New Zealand"}},{"arcs":[[[1139]],[[1140,1141,-37,1142]],[[-41],[-35]],[[-40,1143]]],"type":"MultiPolygon","id":"OMN","properties":{"name":"Oman"}},{"arcs":[[[-954,-897,1144,-903,-2,-457]]],"type":"MultiPolygon","id":"PAK","properties":{"name":"Pakistan"}},{"arcs":[[[1145]],[[-517,1146,-526,1147]]],"type":"MultiPolygon","id":"PAN","properties":{"name":"Panama"}},{"arcs":[[[-248,-221,1148,-215,1149,-219,-438,1150,-600,-514]]],"type":"MultiPolygon","id":"PER","properties":{"name":"Peru"}},{"arcs":[[[1151]],[[1152]],[[1153]],[[1154]],[[1155]],[[1156]],[[1157]],[[1158]],[[1159]],[[1160]],[[1161]],[[1162]],[[1163]],[[1164]],[[1165]],[[1166]],[[1167]],[[1168]],[[1169]],[[1170]],[[1171]],[[1172]],[[1173]],[[1174]],[[1175]],[[1176]],[[1177]],[[1178]],[[1179]],[[1180]],[[1181]]],"type":"MultiPolygon","id":"PHL","properties":{"name":"Philippines"}},{"arcs":[[[1182]]],"type":"MultiPolygon","id":"PLW","properties":{"name":"Palau"}},{"arcs":[[[1183]],[[1184]],[[1185]],[[1186]],[[1187]],[[1188]],[[1189]],[[1190]],[[1191]],[[1192]],[[1193]],[[1194]],[[-858,1195]],[[1196]],[[1197]],[[1198]],[[1199]]],"type":"MultiPolygon","id":"PNG","properties":{"name":"Papua New Guinea"}},{"arcs":[[1200,1201,1202,-1008,-209,1203,1204,-550,-558,1205,-554,1206]],"type":"Polygon","id":"POL","properties":{"name":"Poland"}},{"arcs":[[[1207]]],"type":"MultiPolygon","id":"PRI","properties":{"name":"Puerto Rico"}},{"arcs":[[[1208,1209,-983,1210,-445]]],"type":"MultiPolygon","id":"PRK","properties":{"name":"Dem. Rep. Korea"}},{"arcs":[[[1211]],[[1212]],[[1213]],[[1214]],[[1215,-633]]],"type":"MultiPolygon","id":"PRT","properties":{"name":"Portugal"}},{"arcs":[[-247,1216,-245,-46,-217]],"type":"Polygon","id":"PRY","properties":{"name":"Paraguay"}},{"arcs":[[[-602,1217,-923]],[[-938,1218,-917]]],"type":"MultiPolygon","id":"PSX","properties":{"name":"Palestine"}},{"arcs":[[[1219]]],"type":"MultiPolygon","id":"PYF","properties":{"name":"Fr. Polynesia"}},{"arcs":[[1220,1221]],"type":"Polygon","id":"QAT","properties":{"name":"Qatar"}},{"arcs":[[1222,1223,-189,1224,-795,1225,-1021]],"type":"Polygon","id":"ROU","properties":{"name":"Romania"}},{"arcs":[[[1226]],[[1227]],[[1228]],[[1229]],[[1230]],[[1231]],[[1232]],[[1233]],[[1234]],[[1235]],[[1236]],[[-1203,1237,-1201,1238,-1006,1239,-1009]],[[1240]],[[1241]],[[1242,-639]],[[1243]],[[1244]],[[1245]],[[1246]],[[1247]],[[1248]],[[1249]],[[1250]],[[1251]],[[1252]],[[1253]],[[1254]],[[1255]],[[1256]],[[1257]],[[1258]],[[1259]],[[1260]],[[1261]],[[1262]],[[1263]],[[1264]],[[1265]],[[1266]],[[1267]],[[1268]],[[1269]],[[1270]],[[-1209,-444,1271,-465,-1059,-461,-963,1272,-154,-699,1273,1274,-207,-1012,-643,1275,-641,1276,-637,1277,-653,-1124,1278]],[[1279]],[[1280]],[[1281]],[[1282]],[[1283]],[[1284]],[[1285]],[[1286]],[[1287]],[[1288]],[[1289]],[[1290]],[[1291]],[[1292]],[[1293]],[[1294]],[[1295]],[[1296]],[[1297]],[[1298]]],"type":"MultiPolygon","id":"RUS","properties":{"name":"Russia"}},{"arcs":[[1299,-161,-504,1300,-502,1301]],"type":"Polygon","id":"RWA","properties":{"name":"Rwanda"}},{"arcs":[[-591,-1071,1302,-1018]],"type":"Polygon","id":"ESH","properties":{"name":"W. Sahara"}},{"arcs":[[[1303]],[[-989,1304,-1221,1305,-38,-1142,1306,1307,-934,-909]]],"type":"MultiPolygon","id":"SAU","properties":{"name":"Saudi Arabia"}},{"arcs":[[[1308,-610,-651,1309,-262,1310,-998,-605]]],"type":"MultiPolygon","id":"SDN","properties":{"name":"Sudan"}},{"arcs":[[-650,-969,1311,-496,-263,-1310]],"type":"Polygon","id":"SSD","properties":{"name":"S. Sudan"}},{"arcs":[[-1044,-709,-714,1312,-711,1313,-1069]],"type":"Polygon","id":"SEN","properties":{"name":"Senegal"}},{"arcs":[[1314]],"type":"Polygon","id":"SGP","properties":{"name":"Singapore"}},{"arcs":[[[1315]]],"type":"MultiPolygon","id":"SGS","properties":{"name":"S. Geo. and S. Sandw. Is."}},{"arcs":[[[1316]],[[1317]],[[1318]],[[1319]],[[1320]],[[1321]],[[1322]],[[1323]],[[1324]],[[1325]],[[1326]],[[1327]],[[1328]]],"type":"MultiPolygon","id":"SLB","properties":{"name":"Solomon Is."}},{"arcs":[[[1329]],[[-997,1330,-706]]],"type":"MultiPolygon","id":"SLE","properties":{"name":"Sierra Leone"}},{"arcs":[[[-778,1331,-767]]],"type":"MultiPolygon","id":"SLV","properties":{"name":"El Salvador"}},{"arcs":[[-931]],"type":"Polygon","id":"SMR","properties":{"name":"San Marino"}},{"arcs":[[1332,-647,-565,1333]],"type":"Polygon","id":"SOL","properties":{"name":"Somaliland"}},{"arcs":[[-964,-648,-1333,1334]],"type":"Polygon","id":"SOM","properties":{"name":"Somalia"}},{"arcs":[[-1225,-188,-1042,-987,-1054,-202,-787,-796]],"type":"Polygon","id":"SRB","properties":{"name":"Serbia"}},{"arcs":[[[1335]]],"type":"MultiPolygon","id":"STP","properties":{"name":"S\u00e3o Tom\u00e9 and Principe"}},{"arcs":[[-664,-239,-771,1336]],"type":"Polygon","id":"SUR","properties":{"name":"Suriname"}},{"arcs":[[1337,-798,-142,-551,-1205]],"type":"Polygon","id":"SVK","properties":{"name":"Slovakia"}},{"arcs":[[-789,1338,-929,-144,-797]],"type":"Polygon","id":"SVN","properties":{"name":"Slovenia"}},{"arcs":[[[1339]],[[1340]],[[1341]],[[1342,-1125,-655]]],"type":"MultiPolygon","id":"SWE","properties":{"name":"Sweden"}},{"arcs":[[-1061,1343]],"type":"Polygon","id":"SWZ","properties":{"name":"Swaziland"}},{"arcs":[[1344,-1014]],"type":"Polygon","id":"SXM","properties":{"name":"Sint Maarten"}},{"arcs":[[-913,911,-911,-939,-926,-995,1345,1346]],"type":"Polygon","id":"SYR","properties":{"name":"Syria"}},{"arcs":[[-1311,-267,-473,1347,-481,1348,-479,-1102,-1100,-999]],"type":"Polygon","id":"TCD","properties":{"name":"Chad"}},{"arcs":[[-171,1349,-700,-175]],"type":"Polygon","id":"TGO","properties":{"name":"Togo"}},{"arcs":[[[1350]],[[1351]],[[-992,-976,1352,-1089,1353,-1052]]],"type":"MultiPolygon","id":"THA","properties":{"name":"Thailand"}},{"arcs":[[[-974]],[[1354]],[[-970,-458,-6,1355]]],"type":"MultiPolygon","id":"TJK","properties":{"name":"Tajikistan"}},{"arcs":[[[-4,-902,1356,-961,1357,1358,1359]]],"type":"MultiPolygon","id":"TKM","properties":{"name":"Turkmenistan"}},{"arcs":[[[1360,-803]],[[-805,1361]]],"type":"MultiPolygon","id":"TLS","properties":{"name":"Timor-Leste"}},{"arcs":[[[1362]]],"type":"MultiPolygon","id":"TON","properties":{"name":"Tonga"}},{"arcs":[[[1363]]],"type":"MultiPolygon","id":"TTO","properties":{"name":"Trinidad and Tobago"}},{"arcs":[[[1364]],[[-1001,-586,1365]]],"type":"MultiPolygon","id":"TUN","properties":{"name":"Tunisia"}},{"arcs":[[[1366,-734,-185]],[[-697,-56,-153,-906,-914,-1347,1367]]],"type":"MultiPolygon","id":"TUR","properties":{"name":"Turkey"}},{"arcs":[[[1368]]],"type":"MultiPolygon","id":"TWN","properties":{"name":"Taiwan"}},{"arcs":[[[1369]],[[1370]],[[1371]],[[1372]],[[1373,1374,1375,-966,1376,-1067,1377,-1074,1378,-1076,1379,-1078,1380,-1080,1381,-1083,1382,1383,-158,-1300,1384]]],"type":"MultiPolygon","id":"TZA","properties":{"name":"Tanzania"}},{"arcs":[[[-1375,1385]],[[1386,-1385,-1302,-501,1387,-499,1388,-497,-1312,-968]]],"type":"MultiPolygon","id":"UGA","properties":{"name":"Uganda"}},{"arcs":[[[1389,-1223,-1022,-1226,-794,-1338,-1204,-208,-1275],[1390],[1391]]],"type":"MultiPolygon","id":"UKR","properties":{"name":"Ukraine"}},{"arcs":[[1392,-242,1393,-48,-244]],"type":"Polygon","id":"URY","properties":{"name":"Uruguay"}},{"arcs":[[[1394]],[[1395]],[[1396]],[[1397]],[[1398]],[[1399]],[[1400]],[[1401]],[[1402]],[[1403]],[[1404]],[[1405]],[[1406]],[[1407]],[[1408]],[[1409]],[[1410,-344]],[[1411,-340,1412,-338,1413,-336,1414,-334,-278,1415,-276,1416,-1033,1417,-1031,1418,-1036,1419,-342]],[[1420]],[[1421]],[[1422]],[[1423]],[[1424]],[[1425]],[[1426]],[[1427]],[[1428]],[[1429]],[[1430]],[[1431]],[[1432]],[[1433]],[[1434]],[[1435]],[[1436]],[[1437]],[[1438]],[[1439]],[[1440]],[[1441]],[[1442]],[[1443]],[[1444]],[[1445]],[[1446]],[[1447]],[[1448]],[[1449]],[[1450]],[[1451]],[[1452]],[[1453]],[[-347,345,1454]]],"type":"MultiPolygon","id":"USA","properties":{"name":"United States"}},{"arcs":[[[-534,1455]],[[1456,-532]]],"type":"MultiPolygon","id":"USG","properties":{"name":"USNB Guantanamo Bay"}},{"arcs":[[[-973]],[[-972]],[[-955,1457,-958,-971,-1356,-5,-1360,1458,-1358,-960,1459],[-1355]]],"type":"MultiPolygon","id":"UZB","properties":{"name":"Uzbekistan"}},{"arcs":[[-932]],"type":"Polygon","id":"VAT","properties":{"name":"Vatican"}},{"arcs":[[[1460]]],"type":"MultiPolygon","id":"VCT","properties":{"name":"St. Vin. and Gren."}},{"arcs":[[[1461]],[[1462]],[[1463]],[[-772,-250,-513,1464]]],"type":"MultiPolygon","id":"VEN","properties":{"name":"Venezuela"}},{"arcs":[[[1465]],[[1466,-978,-991,-449]]],"type":"MultiPolygon","id":"VNM","properties":{"name":"Vietnam"}},{"arcs":[[[1467]],[[1468]],[[1469]],[[1470]],[[1471]],[[1472]],[[1473]],[[1474]],[[1475]],[[1476]],[[1477]],[[1478]]],"type":"MultiPolygon","id":"VUT","properties":{"name":"Vanuatu"}},{"arcs":[[1479,-547]],"type":"Polygon","id":"WSB","properties":{"name":"Akrotiri"}},{"arcs":[[[1480]],[[1481]]],"type":"MultiPolygon","id":"WSM","properties":{"name":"Samoa"}},{"arcs":[[[1482]],[[1483,-1307,-1141]]],"type":"MultiPolygon","id":"YEM","properties":{"name":"Yemen"}},{"arcs":[[[-1062,-1344,-1060,1484,-1095,-260,1485],[-1005]]],"type":"MultiPolygon","id":"ZAF","properties":{"name":"South Africa"}},{"arcs":[[-1383,-1082,-1064,1486,1487,1488,-1094,-7,-508,1489,-506,1490]],"type":"Polygon","id":"ZMB","properties":{"name":"Zambia"}},{"arcs":[[-1063,-1486,-259,-1489,1491,-1487]],"type":"Polygon","id":"ZWE","properties":{"name":"Zimbabwe"}}],"type":"GeometryCollection"}},"transform":{"translate":[-180,-90],"scale":[0.036003600360036005,0.01736514657995801]}} \ No newline at end of file diff --git a/src/components/overviewPage/mapContainer.ts b/src/components/overviewPage/mapContainer.ts new file mode 100644 index 00000000..046ba05c --- /dev/null +++ b/src/components/overviewPage/mapContainer.ts @@ -0,0 +1,181 @@ +// tslint:disable: no-unused-variable + +import { RenNetworkDetails, testnet } from "@renproject/contracts"; +import { sleep } from "@renproject/react-components"; +import Axios from "axios"; +import localforage from "localforage"; +import { useState } from "react"; +import { MarkerType } from "react-simple-maps"; +import { createContainer } from "unstated-next"; + +import { retryNTimes } from "../renvmPage/renvmContainer"; + +interface City extends MarkerType { + darknodeID: string; +} + +const sampleDarknodes: City[] = []; + +interface QueryResponse { + jsonrpc: "2.0"; + id: number; + result: { + peers: string[]; + }; +} + +// tslint:disable-next-line: no-any +const parallelLimit = (promiseFactories: Array<() => Promise>, limit: number): any => { + const result: T[] = []; + let cnt = 0; + + // tslint:disable-next-line: no-any + const chain = (innerPromiseFactories: Array<() => Promise>): any => { + if (!innerPromiseFactories.length) { return; } + const i = cnt++; // preserve order in result + // tslint:disable-next-line: no-non-null-assertion + return innerPromiseFactories.shift()!().then((res) => { + result[i] = res; // save result + return chain(innerPromiseFactories); // append next promise + }); + }; + + const arrChains = []; + while (limit-- > 0 && promiseFactories.length > 0) { + // create `limit` chains which run in parallel + arrChains.push(chain(promiseFactories)); + } + + // return when all arrChains are finished + return Promise.all(arrChains).then(() => result); +}; + +export const getLightnode = (network: RenNetworkDetails): string => { + switch (network.name) { + case "mainnet": return ""; + case "chaosnet": return "https://lightnode-chaosnet.herokuapp.com"; + case "testnet": return "https://lightnode-testnet.herokuapp.com"; + case "devnet": return "https://lightnode-devnet.herokuapp.com"; + case "localnet": return ""; + } + return ""; +}; + +const fetchLocationFromAPI = async (ip: string): Promise => { + let limit = 2; + while (limit) { + try { + const apiResponse = (await Axios.get<{ + latitude: number; + longitude: number; + }>(`https://ipapi.co/${ip}/json`)).data; + return { longitude: apiResponse.longitude, latitude: apiResponse.latitude }; + } catch (error) { + try { + const apiResponse = (await Axios.get<{ + lat: number; + lon: number; + // tslint:disable-next-line: no-http-string + }>(`http://ip-api.com/json/${ip}`)).data; + return { longitude: apiResponse.lon, latitude: apiResponse.lat }; + + // Seems to share a rate-limiter with https://ipapi.co. + // const apiResponse = (await Axios.get<{ + // loc: string, + // }>(`https://ipinfo.io/${ip}/json`)).data; + // const [latitude, longitude] = apiResponse.loc.split(",").map((x) => parseInt(x)); + // return { longitude, latitude }; + } catch (error) { + // Try again + } + } + limit--; + await sleep(1 * 1000); + } + throw new Error(`Unable to fetch location for ${ip}`); +}; + +const parseMultiAddress = (multiAddress: string): { ip: string, darknodeID: string } => { + const [, , ip, , , , darknodeID] = multiAddress.split("/"); + return { ip, darknodeID }; +}; + +const getAllDarknodes = async (network: RenNetworkDetails) => { + const lightnode = getLightnode(network); + if (!lightnode) { + throw new Error(`No lightnode to fetch darknode locations.`); + } + const request = { jsonrpc: "2.0", method: "ren_queryPeers", params: {}, id: 67 }; + const response = (await retryNTimes(async () => await Axios.post(lightnode, request), 5)).data; + return response.result.peers; + // return darknodeIDs.map(parseMultiAddress); +}; + +interface Location { longitude: number; latitude: number; } + +const configureCache = (): LocalForage => { + return localforage.createInstance({ + name: "command-center", + version: 1.0, + storeName: "geoip", + description: "Cache API requests to resolve IP address's coordinates", + }); +}; + +const writeCache = async (ip: string, location: Location) => { + await configureCache().setItem(ip, location); +}; + +const readCache = async (ip: string) => { + return await configureCache().getItem(ip); +}; + +const useMapContainer = (initialState = testnet as RenNetworkDetails) => { + // tslint:disable-next-line: prefer-const + let [darknodes, setDarknodes] = useState(sampleDarknodes); + // tslint:disable-next-line: prefer-const + let [darknodeCount, setDarknodeCount] = useState(null); + // tslint:disable-next-line: whitespace + const [network,] = useState(initialState); + const getLocation = async (ip: string): Promise => { + // Check if we've already fetched for this IP + const previousLocation = await readCache(ip); + if (previousLocation) { + return previousLocation; + } + + const location = await fetchLocationFromAPI(ip); + + // Store in map for next time + await writeCache(ip, location); + + // Return location + return location; + }; + + const addDarknodeID = async (multiAddress: string) => { + const { ip, darknodeID } = parseMultiAddress(multiAddress); + try { + const { longitude, latitude } = await getLocation(ip); + darknodes = [...darknodes, { darknodeID, coordinates: [longitude, latitude] }]; + setDarknodes(darknodes); + } catch (error) { + // Ignore errors + } + }; + + const fetchDarknodes = async () => { + try { + const darknodeIDs = await getAllDarknodes(network); + darknodeCount = darknodeIDs.length; + setDarknodeCount(darknodeCount); + const updateDarknodes = darknodeIDs.map((darknodeID: string) => (() => addDarknodeID(darknodeID))); + await parallelLimit(updateDarknodes, 4); + } catch (error) { + console.error(error); + } + }; + return { fetchDarknodes, darknodes, darknodeCount }; +}; + +export const MapContainer = createContainer(useMapContainer); diff --git a/src/components/pages/LoggingIn.tsx b/src/components/pages/LoggingIn.tsx deleted file mode 100644 index 16f5b120..00000000 --- a/src/components/pages/LoggingIn.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import * as React from "react"; - -import { EmptyDarknodeList } from "../darknodeList/EmptyDarknodeList"; - -/** - * LoggingIn is a page whose principal components are wallet selection to allow users - * to log-in, and the hidden orderbook - */ -export const LoggingIn: React.StatelessComponent = () => -
    - -
    ; diff --git a/src/components/renvmPage/RenVM.tsx b/src/components/renvmPage/RenVM.tsx new file mode 100644 index 00000000..054efc8e --- /dev/null +++ b/src/components/renvmPage/RenVM.tsx @@ -0,0 +1,235 @@ +import { getTimeMagnitude, Loading, naturalTime, TokenIcon } from "@renproject/react-components"; +import React, { useCallback, useState } from "react"; +import { withRouter } from "react-router-dom"; +import { CSSTransition, TransitionGroup } from "react-transition-group"; + +import { Token } from "../../lib/ethereum/tokens"; +import { Stat, Stats } from "../common/Stat"; +import { TokenBalance } from "../common/TokenBalance"; +import { Block, RenVMContainer, Tx, Type } from "./renvmContainer"; + +// Returning a new object reference guarantees that a before-and-after +// equivalence check will always be false, resulting in a re-render, even +// when multiple calls to forceUpdate are batched. + +export const useForceUpdate = () => { + const [, dispatch] = useState<{}>(Object.create(null)); + + // Turn dispatch(required_parameter) into dispatch(). + return useCallback( + (): void => { + dispatch(Object.create(null)); + }, + [dispatch], + ); +}; + +let interval: NodeJS.Timeout; + +export const renderTransaction = (tx: Tx): React.ReactNode => { + const [match, _chain, _left, _right] = tx.to.match(/([A-Z0-9]*)0([A-Za-z0-0]*)2([A-Za-z0-0]*)/) || []; + + if (match) { + const [chain, left, right] = [_chain.toUpperCase() as Token, _left.toUpperCase() as Token, _right.toUpperCase() as Token]; + + if (chain === left) { + return <>Shift {tx.args[1].value / 10 ** 8} to ; + } else if (chain === right) { + return <>Shift {tx.args[2].value / 10 ** 8} from ; + } + return <>Shift {tx.args[1].value / 10 ** 8} to on ; + } + return <> + {tx.to} {tx.args.length} {tx.out ? tx.out.length : 0} + ; +}; + +export const RenVM = withRouter(({ match: { params }, history }) => { + const container = RenVMContainer.useContainer(); + + const blockNumber = params.blockNumber + ? parseInt(params.blockNumber, 10) + : null; + + const forceUpdate = useForceUpdate(); + + React.useEffect(() => { + const syncBlocks = () => { + container.updateBlocks().catch(console.error); + }; + + if (blockNumber) { + container.getBlock(blockNumber).catch(console.error); + } + + // Every 30 seconds + if (interval) { + clearInterval(interval); + } + interval = setInterval(syncBlocks, 7.5 * 1000); // Half the cache time + // if (!container.blocks || container.blocks.size === 0) { + syncBlocks(); + // } + + return () => { + clearInterval(interval); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const onClick = useCallback((block: Block) => { + container.getBlock(block.header.height).catch(console.error); + history.push(`/renvm/${block.header.height}`); + }, [container, history]); + + const onClose = useCallback(() => { + history.push(`/renvm/`); + }, [container, history]); + + const blockTr = (block: Block) => { + const trOnClick = () => onClick(block); + return + + {block.header.height} + + {naturalTime(block.header.timestamp, { + message: "Just now", + suffix: "ago", + countDown: false, + showingSeconds: true + })} + + {block.data && block.data.length && block.data.map ?
    {block.data.map((tx, index) => { + return
    + {renderTransaction(tx)} +
    ; + })}
    : No TXs} + +
    ; + }; + + const firstBlock = container.blocks ? container.blocks.first(null) : null; + + if (firstBlock && getTimeMagnitude(firstBlock.header.timestamp, true)) { + setTimeout(() => { + forceUpdate(); + }, 1 * 1000); + } + + // For each locked token, create a element + // tslint:disable-next-line: no-any + const lockedBalances: any = {}; + if (firstBlock && firstBlock.prevState && firstBlock.prevState.map) { + firstBlock.prevState.map((state) => { + if (state.type === Type.BTCCompatUTXOs && state.name.match(/.*UTXOs/)) { + const token = state.name.replace("UTXOs", "").toUpperCase(); + lockedBalances[token] = + sum + utxo.amount, 0) : 0 + )} + digits={4} + />{" "} + {token} + ; + } + }); + } + + // Override the order of the tokens (returned back in alphabetical order) + const { [Token.BTC]: lockedBTC, [Token.ZEC]: lockedZEC, ...remainingLockedBalances } = lockedBalances; + + return ( +
    + + 1 + {firstBlock ? firstBlock.header.height : 0} + {lockedBTC} + {lockedZEC} + {remainingLockedBalances ? Object.values(remainingLockedBalances) : <>} + + {blockNumber ? <> +
    +
    +

    Block {blockNumber}

    + + + + + + + + + {container.currentBlock && container.currentBlockNumber === blockNumber ? + + {blockTr(container.currentBlock)} + : + + } +
    Block NumberTimestampTransactions
    +

    Transactions

    + + + + + + + + + + + + {container.currentBlock && container.currentBlockNumber === blockNumber ? + container.currentBlock.data && container.currentBlock.data.length > 0 && container.currentBlock.data.map ? + container.currentBlock.data.map(tx => { + return ( + + + + + + + + ); + }) : + <> + + : + + } + +
    TXHashContractArgsOutputs
    + {renderTransaction(tx)} + {tx.hash}{tx.to}{tx.args.length}{tx.out ? tx.out.length : 0}
    No transactions
    +
    + : ( + <> + )} + + + + + + + + + + {container.blocks ? + + {container.blocks.map(blockTr).toArray()} + : + + } +
    Block NumberTimestampTransactions
    +
    +
    + ); +}); diff --git a/src/components/renvmPage/_renvm.scss b/src/components/renvmPage/_renvm.scss new file mode 100644 index 00000000..8326fdc8 --- /dev/null +++ b/src/components/renvmPage/_renvm.scss @@ -0,0 +1,186 @@ +.renvm { + // display: flex; + + h2 { + font-style: normal; + font-weight: bold; + font-size: 14px; + line-height: 16px; + + /* identical to box height */ + letter-spacing: 1.75px; + text-transform: uppercase; + color: #ffffff; + } + + .block--row { + animation: highlight 1s; + } + + @keyframes highlight { + 0% { + background: rgba(255, 255, 255, 0.05) !important; + } + + 100% { + background: none; + } + } + + a { + color: white; + text-decoration: none; + } + + .fade-enter { + opacity: 0.01; + } + + .fade-enter.fade-enter-active { + opacity: 1; + transition: opacity 0.6s ease-in-out; + } + + .fade-exit { + opacity: 1; + } + + .fade-exit.fade-exit-active { + opacity: 0.01; + transition: opacity 0.3s ease-in-out; + } + + table { + font-size: 13px; + + thead { + tr { + border: none; + } + + th { + text-transform: uppercase; + font-weight: bold; + font-size: 13px; + line-height: 15px; + color: #f9f9f9; + width: auto; + + min-width: 200px; + } + } + + .renvm--table--txs { + width: 100%; + } + + tbody>tr { + cursor: pointer; + height: 40px; + border: none; + background-color: #00000000 !important; // transparent + + &:hover:nth-child(odd)>td, + &:hover>td { + background: rgba(255, 255, 255, 0.05); + } + + &:nth-child(odd)>td { + background: rgba(100, 100, 255, 0.025); + } + } + } + + .renvm--row { + display: flex; + margin-bottom: 30px; + flex-wrap: wrap; + + >div { + flex-grow: 1; + min-width: 250px; + + &:not(:last-child) { + margin-right: 20px; + } + } + + .renvm--stat { + font-size: 32px; + line-height: 37px; + color: #F9F9F9; + } + } + + .block--txs--td { + overflow: hidden; + max-width: 300px; + } + + .block--txs { + @extend .no-scrollbar; + display: flex; + overflow-y: scroll; + } + + .block--tx { + border-radius: 10px; + border: 1px solid white; + padding: 3px 10px; + display: flex; + justify-content: center; + align-items: center; + + &:not(:last-child) { + margin-right: 5px; + } + + .token--icon { + margin: 0 3px; + + &:last-child { + margin-right: 0; + } + } + + .token--icon>path { + width: 10px; + height: 10px; + } + } + + .block--txs--none { + opacity: 0.3; + } + + .selected-block { + background: #043D7D; + box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5); + border-radius: 6px; + padding: 10px 20px; + margin-right: 0 !important; + margin-bottom: 30px; + position: relative; + + .no-transactions { + margin-top: 20px; + } + } +} + +.popup--x { + position: absolute; + right: ((40px - 12px) / 2); + top: ((40px - 12px) / 2); + height: 12px; + width: 12px; + margin-top: 0; + background: url('../../styles/images/exit-black.svg'); + background-size: 100%; + cursor: pointer; +} + +.popup--x.popup--x--white { + margin-top: 0px; + background: url('../../styles/images/exit.svg'); +} \ No newline at end of file diff --git a/src/components/renvmPage/renvmContainer.ts b/src/components/renvmPage/renvmContainer.ts new file mode 100644 index 00000000..d3bc8e6e --- /dev/null +++ b/src/components/renvmPage/renvmContainer.ts @@ -0,0 +1,233 @@ +// tslint:disable: no-unused-variable + +import { RenNetworkDetails, testnet } from "@renproject/contracts"; +import { sleep } from "@renproject/react-components"; +import Axios from "axios"; +import { List } from "immutable"; +import { useState } from "react"; +import { createContainer } from "unstated-next"; + +import { extractError } from "../../lib/react/errors"; +import { getLightnode } from "../overviewPage/mapContainer"; + +type Addr = string; +type B = string; +type B32 = string; +type U32 = number; +type U64 = number; +// tslint:disable-next-line: no-any +type Value = any; + +export enum Type { + Addr = "addr", + Str = "str", + B20 = "b20", + B32 = "b32", + B = "b", + I8 = "i8", + I16 = "i16", + I32 = "i32", + I64 = "i64", + U8 = "u8", + U16 = "u16", + U32 = "u32", + U64 = "u64", + BTCCompatUTXOs = "ext_btcCompatUTXOs", +} + +interface Arg { + name: string; + type: Type; + value: Value; +} + +type Args = Arg[]; + +export interface Tx { + hash: B32; + to: Addr; + args: Args; + out: Args; +} + +type Txs = Tx[]; + +interface ExtBtcCompatUTXO { + txHash: B32; + vOut: U32; + scriptPubKey: B; + amount: U64; + ghash: B32; +} + +type ExtBtcCompatUTXOs = ExtBtcCompatUTXO[]; + +export interface Block { + hash: B32; + header: { + kind: 1; + parentHash: B32; + baseHash: B32; + height: U64; + round: U64; + timestamp: U64; + signatories: null; + }; + data: Txs; + prevState: [ + { + name: "bchUTXOs"; + type: "ext_btcCompatUTXOs"; + value: ExtBtcCompatUTXOs; + }, + { + name: "btcUTXOs"; + type: "ext_btcCompatUTXOs"; + value: ExtBtcCompatUTXOs; + }, + { + name: "zecUTXOs"; + type: "ext_btcCompatUTXOs"; + value: ExtBtcCompatUTXOs; + } + ]; +} + +type Blocks = Block[]; + +export interface RPCResponse { + jsonrpc: "2.0"; + id: number; + result: T; +} + +interface ResponseQueryBlock { + block: Block; +} + +interface ResponseQueryBlocks { + blocks: Blocks | null; +} + +const N = 8; + +export const retryNTimes = async (fnCall: () => Promise, retries: number) => { + let returnError; + // tslint:disable-next-line: no-constant-condition + for (let i = 0; i < retries; i++) { + // if (i > 0) { + // console.debug(`Retrying...`); + // } + try { + return await fnCall(); + } catch (error) { + if (String(error).match(/timeout of .* exceeded/)) { + returnError = error; + } else { + const errorMessage = extractError(error); + if (errorMessage) { + error.message += ` (${errorMessage})`; + } + throw error; + } + } + await sleep(100); + } + throw returnError; +}; + +const getBlocks = async (network: RenNetworkDetails, previousBlocks: List): Promise> => { + const lightnode = getLightnode(network); + if (!lightnode) { + throw new Error(`No lightnode to fetch darknode locations.`); + } + const firstBlock = previousBlocks.first(null); + let previousHeight = null; + if (firstBlock) { + previousHeight = firstBlock.header.height; + } + if (previousHeight === null) { + const request = { jsonrpc: "2.0", method: "ren_queryBlocks", params: { n: N }, id: 67 }; + let response; + let i = 0; + do { + response = (await retryNTimes(async () => await Axios.post>(lightnode, request), 5)).data.result; + i++; + } while ((response.blocks === null || response.blocks.length === 0) && i < 5); + return response.blocks ? List(response.blocks).sort((a, b) => b.header.height - a.header.height) : List(); + } else { + let currentHeight = null as number | null; + let syncedHeight = null as number | null; + let newBlocks = List(); + while ( + currentHeight === null || syncedHeight === null || + (syncedHeight > previousHeight + 1 && syncedHeight + N - 1 > currentHeight && syncedHeight > 0) + ) { + const request = { jsonrpc: "2.0", method: "ren_queryBlock", params: { blockHeight: syncedHeight && syncedHeight - 1 }, id: 67 }; + const response = (await retryNTimes(() => Axios.post>(lightnode, request), 4)).data.result; + const latestBlock = response.block; + if (latestBlock.header.height === previousHeight) { + break; + } + currentHeight = currentHeight || latestBlock.header.height; + syncedHeight = latestBlock.header.height; + newBlocks = newBlocks.push(latestBlock); + } + return newBlocks.concat(previousBlocks).slice(0, N).toList(); + } +}; + +const useRenVMContainer = (initialState = testnet as RenNetworkDetails) => { + // tslint:disable-next-line: whitespace + const [network,] = useState(initialState); + // tslint:disable-next-line: prefer-const + let [blocks, setBlocks] = useState | null>(null); + // tslint:disable-next-line: prefer-const + let [currentBlock, setCurrentBlock] = useState(null); + // tslint:disable-next-line: prefer-const + let [currentBlockNumber, setCurrentBlockNumber] = useState(null); + + const updateBlocks = async () => { + blocks = await getBlocks(network, blocks || List()); + setBlocks(blocks); + }; + + const getBlock = async (blockNumber: number) => { + const lightnode = getLightnode(network); + if (!lightnode) { + return; + } + let newCurrentBlock; + + if (blocks) { + const first = blocks.first(null); + const last = blocks.last(null); + + // Check if we already have the block in the list of recent blocks. + if (first && last && first.header.height >= blockNumber && last.header.height <= blockNumber) { + for (const block of blocks.toArray()) { + if (block.header.height === blockNumber) { + newCurrentBlock = block; + break; + } + } + } + } + + // Fetch the block from the lightnode. + if (!newCurrentBlock) { + const request = { jsonrpc: "2.0", method: "ren_queryBlock", params: { n: 5, blockHeight: blockNumber }, id: 67 }; + const response = (await retryNTimes(async () => await Axios.post>(lightnode, request), 5)).data.result; + newCurrentBlock = response.block; + } + + currentBlock = newCurrentBlock; + setCurrentBlock(currentBlock); + currentBlockNumber = currentBlock.header.height; + setCurrentBlockNumber(currentBlockNumber); + }; + + return { blocks, updateBlocks, getBlock, currentBlock, currentBlockNumber }; +}; + +export const RenVMContainer = createContainer(useRenVMContainer); diff --git a/src/components/renvmPage/world-50m.json b/src/components/renvmPage/world-50m.json new file mode 100644 index 00000000..ca92d9d4 --- /dev/null +++ b/src/components/renvmPage/world-50m.json @@ -0,0 +1 @@ +{"arcs":[[[7080,7327],[-5,4],[-10,-10],[5,-6]],[[7070,7315],[-16,-12],[-9,5],[-28,-4],[-12,-6],[-1,-5],[-17,-18],[-11,-16],[6,-10],[6,-18],[-2,-15],[3,-8],[-18,-35],[4,-12],[-2,-18],[-7,-5],[-13,0],[-13,4],[3,-16],[6,-6],[-1,-9],[4,-9],[-12,-14],[-8,0],[-6,-18],[2,-7],[-6,-11],[2,-30],[-8,-17],[-6,-1],[-2,8],[-15,4],[-3,-8],[-14,-12],[6,-9],[-11,-7],[-13,6],[-7,-15],[-8,-7],[-3,-19],[2,-9],[-4,-35],[-32,-17],[-16,2],[-11,-11],[-14,6],[-30,-5],[-46,26]],[[6689,6902],[27,56],[1,10],[-4,21],[-24,7],[-1,9],[1,35],[-7,43],[0,9],[7,14],[1,9],[-10,5],[0,31],[11,8],[-5,13],[7,6],[5,26],[-1,11],[4,19]],[[6701,7234],[8,-10],[13,-1],[6,-7],[1,-9],[5,8],[5,-4],[13,13],[0,24],[9,0],[4,6],[20,11],[9,15],[0,16],[5,14],[-1,9],[9,8],[12,0],[4,16],[4,3],[15,-14],[5,2]],[[6847,7334],[14,2],[7,-12],[6,6],[8,-6]],[[6882,7324],[7,-15],[7,10],[15,9],[2,5],[10,-14],[5,7],[-2,13],[4,8],[21,2],[-3,18],[5,4],[12,26],[9,-2],[7,-9],[-1,-21],[6,3],[2,-8],[-3,-14],[-1,-35],[3,-12],[7,-4],[15,19],[9,1],[3,11],[14,14],[13,-2],[-1,-12],[14,8],[12,2],[7,-9]],[[5665,4557],[3,-32],[-3,-9],[0,-36],[2,-12],[-5,-22],[4,-12],[-56,0],[0,-182],[3,-21],[6,-7],[15,-33],[6,-7],[3,-10],[6,-7]],[[5649,4167],[-53,-21],[-11,4],[-8,-4],[-13,9],[-8,-3],[-17,2],[-5,4],[-10,0],[-7,9],[-5,14],[-52,0],[-66,0],[-7,-1],[-12,17],[-4,9],[-6,1],[-18,-16],[-15,4],[-6,-6]],[[5326,4189],[0,28],[2,-1],[-2,58],[7,9],[1,23],[6,24],[2,20],[0,23],[5,12],[0,26],[4,4],[8,20],[0,10],[6,12],[5,0],[8,20],[5,28],[-1,20],[2,29],[-2,15],[-7,15],[-8,46],[-7,29],[6,16],[6,7],[-1,21],[-3,9],[-10,48],[-2,4],[0,21],[-8,16],[-8,30],[16,4],[10,11]],[[5366,4846],[4,-2],[18,2],[12,-3],[21,2],[32,1],[7,-4],[4,-15],[0,-22],[3,-16],[3,-3],[0,-19],[10,-23],[0,-8],[9,-20],[7,4],[6,-4],[2,6],[33,0],[1,20],[4,12],[-2,8],[2,18],[21,0],[9,5],[-3,-22],[36,0],[1,-22],[-2,-20],[5,-23],[-4,-53],[1,-14],[6,-17],[3,-2],[4,-23],[0,-22],[-4,-9],[3,-18],[6,7],[13,-4],[14,9],[12,-3],[2,8]],[[5363,4916],[-7,-5],[-8,-18],[-1,-40],[-8,-2]],[[5339,4851],[-2,5],[2,14],[-6,24]],[[5333,4894],[10,23],[7,3],[4,10],[9,-14]],[[5582,7537],[-1,0]],[[5581,7537],[1,0]],[[5537,7617],[1,0]],[[5538,7617],[-1,0]],[[5557,7633],[4,-13],[7,-4],[3,-22]],[[5571,7594],[-4,-21],[6,-24]],[[5573,7549],[2,-10]],[[5575,7539],[6,-2]],[[5581,7537],[1,-1]],[[5582,7536],[0,0]],[[5582,7536],[0,-5]],[[5582,7531],[1,-5]],[[5583,7526],[0,0]],[[5583,7526],[-2,-13],[-5,-2],[-2,-17],[-11,-8],[3,-12],[-6,-8],[-5,3]],[[5555,7469],[-3,19],[-11,9],[-1,22],[-4,4],[4,16],[-1,29],[5,23],[-7,2]],[[5537,7593],[1,14]],[[5538,7607],[0,13]],[[5538,7620],[9,19],[3,-11],[7,5]],[[5553,8659],[10,-5],[-7,-11],[-10,6],[7,10]],[[5047,7630],[-7,-5],[-1,11]],[[5039,7636],[8,1],[0,-7]],[[6563,6637],[0,0]],[[6563,6659],[2,-2],[1,-36]],[[6566,6621],[-8,-14],[-3,13],[-6,-4],[-1,-38],[7,-9],[-11,-3],[-4,-6],[2,-9],[-10,-44],[0,-17]],[[6532,6490],[-2,-5],[-70,18],[-3,5],[-25,63],[0,9]],[[6432,6580],[6,-1],[0,-13],[12,-3],[10,11],[24,-2],[11,-4],[15,12],[6,14],[1,15],[11,12],[13,31],[11,13],[5,19]],[[6557,6684],[3,-2],[-1,-22],[4,-1]],[[6562,6642],[0,0]],[[3093,2021],[0,6]],[[3093,2027],[0,-6]],[[3093,2028],[0,123]],[[3093,2151],[10,-17],[-8,-15],[11,-6],[5,-17],[12,-13],[7,-13],[17,-13],[11,-14],[12,-7],[20,0],[-5,-16],[-18,1],[-11,-8],[-12,6],[-51,9]],[[3259,3902],[11,-14],[7,-29],[9,-17],[15,-17],[3,-11],[17,-13],[11,-1],[15,-18],[4,-9],[15,-17],[9,-5],[5,-8],[13,-5],[8,-20],[-6,-14],[-3,-19],[-8,-10],[-1,-25],[-3,-14],[-5,-4],[-5,-15],[4,-5],[13,1],[19,-8],[5,-5],[7,4],[5,-5],[6,3],[4,-8],[3,12],[5,5],[10,-9],[5,8],[-1,8],[6,12],[6,0],[11,18],[5,40],[0,22]],[[3483,3710],[5,-4],[6,7],[9,-9],[1,-17],[5,-14],[-2,-9],[0,-25],[-2,-17],[-13,-19],[-15,-5],[-6,-19],[-8,-4],[-6,-13],[-7,-5],[3,-10],[-6,-4],[-20,-39],[-2,-11],[-12,-25],[-5,-2],[-1,-10],[-8,-11]],[[3399,3445],[0,-7],[-7,-12],[2,-23],[-3,-20],[-5,-13],[3,-4],[-2,-14],[-4,-5],[3,-25],[-3,-8]],[[3383,3314],[2,-25],[-2,-12],[-6,0],[-4,-34],[5,-29],[-4,-14],[5,-12],[23,-21],[11,-25],[-7,-19],[0,-13],[7,-17],[12,-6],[1,-29],[-11,-30],[-13,-26],[-2,-16],[-27,-24],[-37,-16],[-27,-8],[-27,0],[-15,11],[3,-32],[5,-9],[-2,-21],[-4,3],[-1,-21],[-4,-5],[6,-17],[-2,-18],[-20,-16],[-21,0],[-26,20],[-8,2],[-4,-10],[5,-32],[-2,-24],[6,-16],[11,-4],[-4,-10],[13,0],[2,10],[-6,0],[14,11],[5,-13],[1,-17],[-3,-12],[-12,-5],[-3,16],[-13,5],[-9,-15],[19,-13],[-20,-17],[-8,-19],[3,-43],[-4,-11],[-9,-7],[0,-20],[-14,3],[-8,-5],[-1,-8],[-14,-5],[-9,-18],[0,-9],[-6,-9],[-2,-14],[7,-25],[7,-6],[8,-16],[6,-4],[17,0],[6,-6],[2,-20],[-5,-33],[-6,-2],[-12,-18],[-16,-14],[-3,-10],[-9,-10],[-6,-22],[2,-16],[-5,-18],[-5,-6],[-23,-14],[-5,-12],[-2,-21],[2,-24],[9,-34],[11,-24],[-3,-1]],[[3098,2168],[-15,10],[-26,10],[-55,1],[-4,12],[-11,13],[6,19],[-5,7],[5,13],[-2,14],[-13,1],[-11,-8],[-3,26],[-7,9],[2,22],[-3,11],[3,15],[9,1],[3,17],[12,10],[1,22],[7,7],[-1,15],[-5,7],[6,30],[8,13],[2,22],[8,9],[-3,32],[4,11],[-4,4],[0,15],[8,5],[5,13],[-8,17],[-14,5],[7,5],[17,3],[2,17],[-18,3],[-1,18],[5,7],[-4,14],[3,7],[-6,16],[5,9],[-11,7],[0,45],[3,8],[8,1],[-5,26],[2,43],[-3,11],[4,27],[5,21],[-2,18],[8,13],[0,25],[15,13],[-3,15],[-1,21],[-5,20],[3,35],[-2,24],[3,12],[10,4],[-1,8],[10,14],[-2,40],[-4,4],[6,6],[0,12],[9,39],[6,2],[-2,34],[3,18],[-9,9],[3,18],[-4,6],[0,16],[-5,12],[-2,14],[3,9],[-5,2],[-3,15],[1,24],[6,8],[0,13],[5,19],[7,8],[2,10],[-4,4],[2,16],[-4,31],[7,10],[1,26],[4,17],[13,33],[9,38],[6,-3],[8,7],[0,10],[-8,21],[0,10],[5,9],[-2,26],[-3,17],[2,15],[5,4],[-6,14],[2,14],[7,13],[25,20],[9,54],[-5,17]],[[3133,3869],[5,9],[0,8],[7,6],[2,12],[9,5],[4,19],[3,-2],[10,-17],[21,0],[12,-5],[6,-38],[3,20],[8,29],[32,1],[4,-14]],[[6265,7522],[0,0]],[[6249,7560],[2,-10],[15,-14],[-6,-16],[6,-11],[11,-10],[-3,-13],[-7,2],[15,-25],[9,-1],[-3,-13],[5,-7],[-5,-5],[3,-15]],[[6291,7422],[-10,-2]],[[6281,7420],[-4,23],[-7,7],[1,10],[-13,-1],[-8,14],[-7,-4]],[[6243,7469],[-8,16],[-12,1],[-11,7],[-3,20],[5,12],[-3,17],[-5,8]],[[6206,7550],[9,0],[11,7],[10,-3],[13,6]],[[6249,7546],[0,0]],[[6255,7542],[0,0]],[[488,408],[24,-7],[-48,-4],[-13,16],[37,-5]],[[542,484],[-90,7],[20,11],[65,-10],[5,-8]],[[3331,592],[8,-3],[-1,-57],[-23,-11],[-52,4],[-17,17],[-32,-10],[-67,20],[3,10],[19,-10],[115,3],[8,27],[39,10]],[[4135,588],[34,-2],[-10,-10],[-44,8],[-5,11],[25,-7]],[[3120,602],[25,-4],[35,-20],[-20,-7],[-40,31]],[[3137,618],[-11,-15],[-30,6],[41,9]],[[4054,618],[1,-6],[-76,3],[30,13],[45,-10]],[[547,618],[21,-9],[14,-23],[-47,-2],[-90,25],[-10,7],[5,17],[24,15],[25,0],[58,-30]],[[3143,666],[-58,-38],[-39,-36],[-31,3],[-10,10],[11,23],[23,11],[92,33],[12,-6]],[[9654,680],[-35,-8],[-8,14],[21,-7],[22,11],[0,-10]],[[3740,650],[1,-7],[44,2],[21,-39],[-7,-30],[-18,-1],[9,-11],[-158,-26],[-16,-9],[-121,-4],[1,17],[22,27],[26,-4],[60,37],[-13,14],[14,40],[31,33],[52,14],[37,-3],[38,-11],[19,-13],[-4,-20],[-38,-6]],[[9641,732],[63,-13],[-27,-10],[-42,-2],[-19,12],[25,13]],[[839,754],[14,-14],[-32,3],[-11,7],[29,4]],[[938,754],[-21,-7],[-2,12],[23,-5]],[[951,834],[16,-10],[-24,3],[8,7]],[[9561,885],[-8,-14],[-7,9],[15,5]],[[1342,903],[19,-12],[-6,-6],[-27,12],[14,6]],[[1458,897],[-1,-13],[-17,20],[18,-7]],[[1760,918],[-17,-8],[-3,7],[26,11],[-6,-10]],[[1680,914],[-12,3],[10,17],[17,-2],[-1,-10],[-14,-8]],[[1635,935],[17,0],[7,-14],[-23,-10],[0,-10],[-32,-4],[-22,7],[3,11],[15,12],[-27,3],[7,10],[55,-5]],[[4425,917],[9,-22],[-14,0],[-4,16],[-29,3],[20,7],[12,19],[11,1],[-5,-24]],[[9717,944],[-11,3],[8,14],[3,-17]],[[1498,961],[13,-7],[9,-16],[-11,-7],[29,6],[17,-9],[7,-11],[-6,-12],[-22,3],[-48,22],[0,8],[-19,7],[-3,16],[34,0]],[[2955,972],[-2,-10],[-13,0],[15,10]],[[2514,979],[-20,-5],[-4,5],[22,8],[2,-8]],[[2918,987],[18,-3],[-8,-40],[-36,14],[-7,10],[11,7],[18,0],[-19,10],[23,2]],[[2474,988],[-3,-19],[-14,-1],[6,17],[-10,16],[23,1],[-2,-14]],[[2365,999],[-10,3],[18,7],[-8,-10]],[[2270,1031],[14,-3],[-2,14],[10,0],[2,-17],[10,19],[19,1],[5,-10],[-23,-11],[8,-3],[27,11],[-6,-10],[13,-10],[-15,-1],[1,-9],[-72,2],[2,5],[-24,-1],[6,7],[-29,6],[-58,7],[6,10],[57,7],[8,-11],[7,7],[23,-12],[-13,13],[17,9],[15,-6],[-8,-14]],[[4919,1112],[8,-10],[14,1],[-17,-19],[-8,18],[-16,10],[19,0]],[[2947,1119],[8,-13],[-22,-10],[-48,-11],[-9,4],[2,12],[33,5],[9,12],[8,-13],[3,14],[16,0]],[[3313,1111],[-7,10],[11,1],[-4,-11]],[[4835,1126],[-5,-10],[-10,9],[15,1]],[[5082,1116],[-11,6],[19,4],[-8,-10]],[[4913,1121],[-10,0],[6,12],[12,3],[2,-14],[-10,-1]],[[7004,1113],[-10,3],[-5,16],[16,-11],[-1,-8]],[[5124,1122],[-12,11],[12,5],[0,-16]],[[5745,1129],[-22,0],[-2,11],[19,6],[5,-17]],[[5040,1146],[-7,-18],[-5,21],[12,-3]],[[2924,1165],[8,-12],[-12,-13],[-23,5],[-1,13],[8,7],[20,0]],[[5449,1148],[-17,8],[11,12],[19,-1],[-11,-8],[-2,-11]],[[3001,1170],[-23,2],[-6,7],[17,4],[12,-13]],[[3283,1179],[-6,-12],[-16,30],[11,2],[11,-20]],[[3055,1197],[19,-24],[1,-17],[16,-26],[11,-25],[3,-60],[-6,-23],[-20,-7],[-2,-10],[-40,-7],[-49,0],[-21,13],[10,8],[16,-3],[45,-2],[14,8],[-7,6],[-28,-9],[-18,10],[35,8],[1,5],[-31,0],[-14,17],[-11,-17],[-31,2],[10,-8],[-14,-9],[-38,14],[-1,15],[15,8],[16,-8],[-4,12],[9,4],[16,-13],[-4,14],[29,-2],[9,7],[-23,7],[10,6],[30,-6],[19,11],[20,0],[13,-11],[-2,16],[-35,7],[5,17],[24,8],[15,-4],[-18,14],[-20,-4],[-27,14],[7,34],[-10,5],[0,20],[45,10],[9,-7],[2,-18]],[[7385,1327],[-15,4],[8,9],[7,-13]],[[3111,1321],[9,-5],[-16,-13],[-8,-22],[-11,0],[-7,9],[22,44],[15,12],[5,-5],[-10,-11],[1,-9]],[[7686,1378],[4,-8],[-14,-2],[10,10]],[[3174,1408],[-3,-16],[-10,-2],[6,17],[7,1]],[[7805,1401],[-19,0],[-1,7],[12,10],[15,-7],[-7,-10]],[[7870,1413],[-16,19],[9,-2],[7,-17]],[[3410,1465],[-6,6],[14,7],[-8,-13]],[[3242,1481],[-2,-9],[14,-8],[-14,-12],[-26,3],[20,26],[8,0]],[[3270,1492],[2,-17],[-12,-8],[10,25]],[[3394,1508],[-2,-9],[20,-7],[-8,-17],[-7,6],[-7,-7],[-14,20],[5,8],[13,6]],[[3446,1521],[-9,7],[15,-2],[-6,-5]],[[0,324],[46,3],[68,-14],[19,8],[194,-14],[21,-11],[128,-2],[122,-11],[81,-3],[-58,13],[54,1],[-124,12],[-104,7],[24,11],[-55,17],[37,2],[-52,17],[-71,-3],[-37,23],[-127,27],[73,-2],[18,-14],[73,-4],[20,4],[70,-3],[6,-14],[50,10],[19,-11],[127,8],[18,9],[-44,5],[81,5],[16,14],[70,14],[-10,10],[-54,26],[31,11],[-19,10],[-74,13],[17,11],[109,6],[135,7],[0,5],[-77,24],[-11,11],[13,10],[43,-4],[46,10],[-17,11],[-75,12],[-55,17],[-3,5],[-68,8],[-43,21],[14,11],[48,6],[-2,14],[-71,-7],[-47,23],[14,18],[-3,26],[9,1],[24,-17],[21,17],[21,-5],[18,4],[38,-10],[-9,-10],[36,-3],[2,10],[72,-30],[30,16],[30,6],[-36,7],[7,14],[32,-17],[21,7],[13,-13],[27,0],[-16,13],[21,1],[-31,15],[29,-5],[-22,20],[-27,16],[-38,-3],[-33,3],[2,9],[28,4],[9,7],[69,-21],[6,8],[-27,13],[9,11],[56,6],[1,10],[41,4],[2,6],[19,-3],[9,-14],[18,0],[-10,14],[29,6],[16,14],[61,4],[30,-4],[-16,9],[4,14],[30,0],[11,11],[22,-4],[18,-16],[30,9],[58,-4],[20,-5],[64,13],[93,0],[8,-7],[45,3],[41,0],[59,10],[-3,10],[24,6],[6,-12],[33,-3],[51,6],[-7,21],[11,10],[21,0],[-9,-7],[19,2],[-8,-12],[4,-14],[15,3],[-18,-16],[-6,-21],[9,6],[46,8],[15,0],[-10,11],[0,20],[15,6],[35,-17],[-5,-19],[-34,-18],[4,-7],[45,4],[84,-10],[53,13],[28,-3],[14,4],[49,-4],[-3,-8],[20,-8],[70,13],[-27,6],[2,10],[-34,3],[17,7],[3,14],[-46,3],[5,11],[-7,15],[-33,5],[-4,20],[42,-4],[3,-6],[47,2],[-5,21],[-41,3],[-46,0],[-11,7],[-4,20],[11,7],[26,-4],[-17,-12],[21,-4],[33,4],[84,-1],[9,-7],[44,-11],[17,7],[24,-7],[21,8],[46,0],[33,-7],[16,10],[25,1],[6,10],[-10,17],[33,-4],[1,-10],[-15,-14],[9,-9],[30,6],[8,-11],[38,11],[5,-13],[28,-10],[20,2],[43,-19],[29,9],[-2,28],[24,-11],[-8,25],[28,-2],[24,-17],[-2,-16],[55,8],[5,-7],[-15,-14],[48,6],[7,5],[34,-5],[26,15],[57,12],[21,-2],[42,10],[35,16],[22,43],[-1,7],[-20,21],[-4,13],[6,23],[-15,38],[-15,16],[4,21],[-13,16],[15,0],[-1,7],[25,-14],[5,14],[11,6],[0,11],[-18,7],[14,5],[-5,17],[6,14],[-9,16],[12,3],[6,21],[-10,5],[-19,-1],[15,30],[6,0],[-2,-17],[15,-6],[1,26],[-4,14],[8,4],[14,-7],[5,34],[14,-2],[-5,11],[19,-4],[3,23],[16,1],[-5,27],[11,6],[16,-7],[-4,11],[20,14],[11,-3],[9,12],[10,1],[-1,10],[14,4],[-1,13],[30,14],[13,-2],[3,10],[12,2],[1,8],[21,4],[7,8],[13,6],[11,-3],[7,-20],[-10,-3],[-2,12],[-15,-12],[-10,0],[-15,-17],[-9,-22],[-9,-6],[-7,7],[-6,-6],[-19,-5],[-17,-29],[-20,3],[6,-10],[-18,-10],[9,-14],[-14,-14],[13,-19],[16,3],[0,10],[21,-2],[-16,-14],[-16,0],[-2,-16],[-5,16],[-19,-3],[1,-28],[-16,27],[-15,3],[-10,-29],[11,-10],[-9,-4],[-14,11],[-12,-15],[6,-16],[-15,-6],[-8,5],[-3,-33],[10,-6],[-12,-11],[21,6],[6,-6],[-20,-7],[14,-6],[-10,-7],[36,-17],[-2,17],[23,7],[-14,-17],[15,-6],[-5,-8],[14,-25],[14,-7],[-2,-21],[15,-13],[-1,-11],[-10,4],[5,-18],[22,1],[-16,-24],[20,4],[9,-21],[-5,-12],[-12,-1],[-14,-13],[14,-1],[11,10],[9,-8],[-7,-12],[-38,-3],[36,-14],[13,10],[0,-26],[-19,-2],[6,-18],[17,8],[-7,-24],[25,4],[-11,-19],[-9,8],[-3,-13],[-15,12],[-21,5],[13,-17],[21,-10],[-7,-23],[-21,5],[21,-13],[-23,-13],[31,7],[-9,-17],[-36,6],[17,-17],[-10,-13],[-13,-3],[-2,17],[-17,2],[6,-15],[-14,3],[-10,-10],[18,2],[7,-9],[-35,-4],[-2,-7],[33,-3],[-85,-34],[-52,-9],[4,-3],[-60,-13],[4,-11],[-17,-7],[-31,-1],[-20,4],[-46,0],[-31,8],[-64,0],[34,-42],[23,-15],[10,6],[66,-8],[-25,-26],[-38,-9],[-61,13],[-95,13],[-30,-6],[118,-34],[-9,-17],[-71,-7],[-61,21],[-37,30],[12,-23],[-13,-4],[17,-20],[42,-17],[17,-23],[18,-7],[2,20],[108,-4],[17,-13],[-20,-24],[-22,-3],[-62,0],[55,-10],[39,6],[24,-26],[-8,-7],[24,-16],[19,7],[38,-10],[7,13],[39,9],[21,-6],[9,-14],[46,-9],[89,-24],[77,-3],[-92,-8],[62,-5],[-2,-4],[-62,-1],[-6,-25],[26,-5],[52,8],[75,3],[-64,-17],[33,-33],[-6,-17],[66,-4],[49,30],[72,31],[52,14],[16,-1],[53,11],[65,5],[59,-2],[6,-17],[-17,-11],[31,-7],[67,24],[-2,10],[36,18],[9,16],[79,27],[42,-13],[34,10],[18,17],[53,0],[40,12],[42,-3],[-21,10],[37,0],[5,7],[153,6],[48,10],[-61,7],[-165,11],[31,17],[-27,0],[9,15],[-73,-12],[-96,23],[-5,14],[12,23],[11,3],[8,18],[24,0],[-7,12],[28,18],[34,10],[17,0],[5,10],[28,7],[15,13],[36,16],[52,10],[29,14],[48,10],[53,7],[31,-4],[22,14],[17,-6],[43,6],[-18,11],[29,26],[-3,10],[14,17],[24,3],[23,-7],[39,33],[-10,4],[-27,-10],[-22,3],[17,4],[-20,7],[1,13],[28,23],[18,3],[12,-9],[16,11],[-15,16],[29,-7],[14,11],[42,13],[3,19],[10,20],[-18,0],[-18,7],[-1,18],[16,2],[1,-9],[21,-10],[7,17],[16,9],[-12,10],[13,4],[3,-10],[22,-7],[10,-28],[15,7],[15,-5],[-4,9],[6,23],[-11,13],[13,5],[25,-7],[16,14],[13,-8],[-20,-29],[71,-3],[7,-9],[4,12],[18,3],[5,-6],[28,-5],[7,11],[12,-7],[-4,-14],[12,-9],[21,25],[13,8],[41,14],[105,20],[19,0],[28,7],[-5,17],[12,2],[-1,-17],[11,-3],[25,9],[-8,8],[9,9],[22,-23],[31,-14],[21,-5],[14,25],[18,7],[-16,10],[16,1],[8,-13],[22,-4],[22,3],[27,-4],[3,9],[17,3],[-3,-18],[45,-4],[11,1],[-6,11],[17,9],[11,-10],[-10,-23],[10,-10],[23,-1],[26,4],[3,13],[16,24],[24,-18],[-21,-6],[14,-7],[26,-5],[13,26],[15,-4],[0,-15],[27,-15],[31,-3],[35,17],[23,3],[38,21],[40,5],[38,11],[7,7],[2,33],[-12,13],[-1,13],[20,12],[28,0],[4,-8],[-21,-13],[24,-1],[20,-13],[-2,-23],[45,4],[8,-15],[7,9],[26,-1],[-5,-7],[19,-19],[2,12],[13,7],[-1,10],[15,4],[-2,32],[4,14],[26,6],[21,15],[28,4],[8,17],[32,8],[24,0],[-6,5],[34,13],[14,-6],[-2,23],[18,5],[14,-8],[-13,-7],[10,-3],[6,-12],[9,8],[16,-6],[-5,-17],[13,20],[-3,14],[16,5],[2,11],[-19,-3],[-6,13],[27,6],[-2,-9],[15,2],[0,-13],[11,8],[11,-7],[10,7],[-14,3],[10,16],[-16,1],[-1,12],[9,14],[23,4],[11,12],[30,4],[25,7],[40,-6],[19,-10],[15,-20],[11,3],[13,-8],[1,-9],[-36,3],[15,-8],[-11,-23],[1,-12],[7,13],[33,10],[23,-11],[12,1],[5,-20],[12,-4],[4,11],[24,0],[18,-7],[45,-7],[24,9],[30,-9],[45,-7],[48,-4],[9,-3],[35,8],[-1,-15],[14,-30],[-13,-3],[-7,-17],[13,0],[-16,-9],[12,-8],[0,-9],[-27,-3],[17,-14],[-13,-6],[9,-5],[-17,-12],[-13,18],[-18,-29],[13,-14],[34,8],[1,-21],[-15,-30],[-17,-8],[-5,-19],[-10,-7],[-6,-33],[-12,-36],[-15,-8],[25,-10],[22,10],[-3,26],[14,11],[34,3],[8,20],[20,6],[-6,7],[17,12],[14,3],[-11,7],[16,40],[17,7],[14,12],[-6,15],[22,23],[15,5],[8,-12],[28,6],[5,-7],[13,8],[-3,16],[35,18],[22,5],[7,21],[16,4],[-7,13],[9,12],[19,10],[73,24],[30,4],[13,-3],[-6,13],[29,18],[36,-4],[9,7],[18,0],[34,17],[8,-5],[14,4],[23,-4],[23,1],[19,14],[25,5],[12,-6],[34,1],[4,-10],[31,17],[11,-4],[8,-10],[13,6],[16,0],[16,6],[13,-10],[14,13],[9,0],[8,-26],[8,11],[13,3],[9,9],[27,7],[14,17],[0,7],[27,0],[8,6],[27,-9],[24,-3],[65,-22],[29,-6],[-3,-17],[12,13],[16,-19],[18,0],[29,17],[7,0],[-5,20],[13,14],[62,17],[35,-27],[-3,-15],[21,2],[16,-8],[3,-10],[-17,-16],[-31,-8],[-11,-15],[25,3],[22,10],[32,6],[13,10],[-3,-10],[19,3],[5,-6],[32,-1],[41,14],[0,-3],[-45,-17],[5,-7],[73,19],[18,14],[58,14],[13,-9],[11,6],[8,14],[14,6],[12,-14],[14,6],[-8,-12],[3,-11],[11,0],[0,-16],[28,6],[11,-7],[10,7],[6,-10],[11,13],[2,21],[16,19],[18,8],[28,-7],[30,4],[8,6],[19,-2],[13,-11],[-5,-11],[19,10],[11,0],[9,12],[4,-14],[13,7],[8,-8],[30,1],[20,-11],[35,-3],[12,-6],[28,-3],[10,-5],[20,3],[14,-13],[27,10],[12,-6],[-4,-11],[21,8],[5,-6],[-22,-38],[0,-10],[11,0],[26,23],[9,-10],[14,7],[14,-31],[13,5],[-8,-14],[8,-7],[23,3],[4,-6],[39,4],[35,-1],[10,4],[-1,-21],[16,-13],[0,14],[24,0],[17,-11],[23,7],[-5,24],[5,3],[24,-14],[2,-10],[16,-13],[14,-3],[17,-14],[19,3],[6,-10],[6,8],[17,-1],[45,-17],[14,-20],[-16,0],[28,-13],[19,-34],[-3,-13],[18,0],[2,34],[16,3],[22,-23],[21,2],[-3,7],[38,-3],[13,-6],[12,5],[13,-6],[-9,-6],[27,2],[18,-20],[10,-3],[48,-30],[2,21],[19,-31],[-5,-6],[-13,7],[-13,-34],[12,6],[-5,-17],[-39,15],[-11,-1],[16,-13],[29,-8],[-8,-19],[-20,-10],[-14,16],[-2,-13],[-32,1],[-12,5],[1,-16],[9,6],[23,-6],[-20,-4],[-5,-9],[-34,0],[9,-14],[-26,-1],[1,15],[-11,9],[-4,-20],[17,-14],[-15,0],[13,-30],[-24,1],[-20,-6],[-3,16],[-30,-30],[9,-7],[-5,-13],[-22,2],[-34,-12],[45,-1],[-4,-7],[21,-16],[-2,-16],[-18,-5],[18,-3],[4,-13],[-13,-11],[14,-5],[-14,-17],[18,0],[20,-30],[-7,-11],[27,-7],[-11,-20],[14,-7],[20,8],[12,-14],[36,-4],[-15,-13],[-12,9],[-47,-2],[-37,-7],[-14,-13],[-34,22],[20,-29],[-38,2],[-9,-8],[9,-14],[-23,-14],[27,3],[-37,-16],[52,-4],[-72,-17],[-6,-13],[61,6],[7,-8],[-35,-4],[40,-4],[-17,-13],[9,-23],[-22,5],[25,-20],[40,-9],[38,-31],[-89,-12],[59,-2],[53,8],[73,-27],[12,-14],[24,3],[-3,-20],[86,-9],[66,-23],[124,-12],[-9955,-15]],[[3456,1546],[12,-3],[-1,-9],[-17,4],[-19,-9],[3,13],[22,4]],[[3431,1556],[12,-2],[-6,-9],[-6,11]],[[3331,1581],[7,-5],[-12,-7],[-4,7],[-20,-3],[-1,6],[30,2]],[[3392,1616],[7,-6],[-33,-7],[10,13],[16,0]],[[3470,1665],[-6,-10],[-5,8],[11,2]],[[6916,2373],[5,-3],[-5,-12],[16,-14],[19,13],[7,-1],[-1,-15],[-9,1],[-11,-5],[2,-7],[13,1],[-1,-9],[-22,3],[-7,8],[-5,-13],[-8,4],[5,20],[-5,14],[1,12],[6,3]],[[9093,2685],[-7,-6],[5,12],[2,-6]],[[9020,2837],[14,-3],[13,-8],[2,-6],[17,-8],[24,13],[5,-4],[5,11],[5,-4],[4,9],[10,-13],[-1,-28],[1,-39],[-7,1],[-1,-22],[-4,-21],[3,-1],[0,-21],[-10,9],[6,10],[-14,1],[-4,-23],[-2,6],[-8,-26],[-9,6],[-14,-1],[-3,20],[-2,-6],[-4,15],[-7,9],[-6,24],[0,13],[9,-9],[-13,31],[-11,37],[-2,13],[4,15]],[[9121,2859],[-9,-6],[0,6],[9,0]],[[9109,2896],[9,-16],[1,-14],[-5,-2],[-11,22],[6,10]],[[9001,2876],[-5,-4],[-1,25],[7,3],[-1,-24]],[[8822,3134],[-1,-10],[12,1],[0,-11],[-11,1],[-5,-10],[-20,1],[-4,17],[21,11],[8,0]],[[9263,3604],[-1,-18],[-2,14],[3,4]],[[9261,3608],[-2,17],[3,2],[-1,-19]],[[8136,3714],[7,-36],[-7,19],[0,17]],[[9257,3758],[2,-20],[-10,-37],[1,32],[5,7],[-2,14],[4,4]],[[9195,3832],[5,-3],[0,-17],[-7,17],[2,3]],[[9061,4133],[3,-7],[-3,-7],[-4,13],[4,1]],[[8880,4236],[-7,-7],[0,-6],[-8,0],[1,8],[10,8],[4,-3]],[[8805,4285],[2,-15],[-4,8],[2,7]],[[8797,4395],[0,-9],[6,2],[-5,-8],[-1,-14],[6,-6],[-8,0],[-6,5],[-1,14],[9,16]],[[8621,4522],[5,-21],[-7,4],[-8,-2],[5,9],[-2,9],[6,10],[1,-9]],[[8624,4533],[6,-6],[14,10],[6,-2],[1,-21],[-14,-18],[-13,16],[-3,29],[3,-8]],[[8682,4547],[1,-13],[-4,6],[3,7]],[[8959,4566],[-1,-8],[6,-7],[3,-19],[0,-30],[10,-9],[-4,-20],[6,-4],[4,-11],[-2,-17],[5,2],[-1,-13],[3,-19],[-2,-19],[5,-20],[3,-22],[5,-2],[15,18],[4,-22],[18,-23],[-3,-12],[2,-6],[2,-37],[3,-8],[-2,-16],[6,-22],[9,-9],[-1,-11],[5,-19],[1,-16],[-3,-34],[9,-15],[-2,-17],[5,-14],[13,-15],[4,7],[2,-12],[8,0],[4,-6],[1,-14],[19,-12],[1,-10],[7,5],[3,-13],[4,1],[1,-10],[-4,-1],[-1,-10],[15,-24],[-1,-8],[8,-30],[0,-14],[3,-20],[8,-7],[5,-13],[-3,22],[4,5],[3,-9],[10,-13],[2,13],[6,-21],[-2,-15],[3,-36],[4,0],[4,-13],[5,-4],[6,-13],[6,3],[4,-6],[6,-27],[8,-7],[4,-25],[10,-6],[0,-27],[6,-16],[-2,-19],[4,-40],[-4,-3],[10,-41],[1,-17],[3,-4],[1,-40],[-7,-21],[-2,-39],[-7,-32],[0,-30],[-3,-28],[-5,-21],[-6,-11],[0,-23],[-13,-15],[-11,-20],[-6,-26],[-5,-3],[0,-26],[-9,-18],[-3,-27],[-4,-14],[2,-9],[-8,-7],[-9,-34],[0,-24],[-7,-34],[4,-21],[-2,-14],[-13,-16],[-33,-2],[-16,-10],[-10,-13],[-13,-24],[-19,-4],[3,-12],[4,7],[-2,-20],[-6,16],[-8,-3],[-4,16],[-3,-3],[-8,9],[5,8],[-2,9],[-6,0],[-1,-10],[-8,-5],[-6,8],[8,1],[3,17],[-6,10],[-15,-14],[10,-2],[-2,-8],[-6,0],[-10,-11],[-14,-22],[-32,28],[-5,-2],[-8,7],[-9,-1],[1,-6],[-8,1],[-4,13],[-14,5],[-10,11],[-3,13],[-13,23],[-3,18],[5,6],[0,13],[-9,34],[-14,26],[6,2],[3,10],[-4,3],[-21,-20],[-8,0],[-1,7],[9,12],[3,33],[-8,16],[-3,16],[-7,-13],[-1,-20],[-5,-23],[-7,4],[-15,-11],[3,23],[11,-3],[3,21],[-1,25],[4,17],[9,19],[-3,19],[6,4],[-8,34],[0,-26],[-3,2],[-6,-11],[-5,-27],[-25,-26],[-8,-24],[-4,-3],[-4,-16],[6,2],[0,-12],[-5,7],[-6,-5],[-6,18],[-1,21],[-3,17],[-11,20],[-4,27],[-12,0],[-2,13],[-4,1],[7,15],[-5,12],[-8,-5],[3,9],[-8,16],[-14,-5],[-10,14],[-7,1],[-9,-6],[-12,18],[-18,14],[-9,-7],[-18,2],[-33,-7],[-27,-23],[-20,-11],[-17,-2],[-14,5],[-18,-19],[-15,-10],[-2,-6],[-17,-8],[-4,-5],[-5,-28],[-7,-16],[-6,-7],[-4,3],[-6,-7],[-3,9],[-19,-3],[-8,-6],[0,8],[-14,3],[-20,-2],[-13,-6],[-16,-1],[-9,-16],[-2,-12],[-16,1],[-3,-11],[-7,-4],[-2,-11],[-20,-8],[-2,-5],[-12,7],[-18,-1],[-15,14],[-10,19],[-10,9],[-4,-3],[-4,15],[0,32],[6,-7],[7,3],[6,18],[-1,36],[3,8],[0,43],[-18,66],[-4,34],[1,32],[-5,22],[-7,17],[0,16],[-11,24],[-2,38],[-5,16],[-11,32],[-7,13],[5,14],[6,-26],[7,6],[0,9],[-9,14],[-4,27],[2,4],[7,-20],[-1,-17],[5,14],[2,-22],[7,-2],[0,30],[-5,13],[-6,26],[-4,4],[-3,21],[-5,16],[1,26],[4,22],[5,6],[0,24],[2,10],[-5,22],[3,7],[7,33],[4,4],[-2,-20],[1,-21],[7,4],[8,34],[23,20],[13,26],[21,22],[5,-3],[8,6],[7,-7],[12,7],[8,14],[17,3],[10,20],[12,-6],[7,6],[12,3],[16,11],[11,13],[9,25],[3,19],[4,4],[16,39],[-4,1],[-2,36],[3,14],[8,17],[6,3],[0,10],[7,12],[-1,-15],[5,-3],[0,-14],[12,-37],[-1,10],[3,13],[-2,11],[7,-10],[-3,24],[-6,5],[6,13],[-5,8],[5,2],[7,-7],[-1,9],[7,-9],[16,-1],[-10,3],[-1,9],[6,4],[1,18],[-4,-11],[-3,18],[1,9],[6,1],[3,9],[5,0],[4,-9],[1,10],[-6,3],[4,17],[11,-10],[0,9],[-8,16],[10,14],[3,-4],[7,6],[1,-11],[3,5],[4,26],[-5,5],[4,7],[3,-19],[9,16],[1,-16],[4,14],[4,0],[-3,11],[6,4],[4,-14],[9,1],[11,-28],[10,-16],[-3,-17],[0,-13],[4,-1],[-1,11],[5,14],[4,3],[12,-5],[9,-11],[-1,11],[7,-5],[3,-14],[4,1],[-3,18],[5,-1],[-6,15],[-7,11],[4,20],[7,4],[1,18],[4,9],[11,12],[-5,9],[0,14],[6,2],[0,12],[6,6],[2,11],[7,-14],[0,17],[4,-2],[-1,12],[9,5],[3,-13],[13,4],[4,-5],[9,5],[7,9],[2,24],[-7,12],[-9,-5],[-5,12],[-5,0],[7,11],[10,-1],[9,-21],[6,10],[7,-21],[14,-7],[4,6],[4,-11],[3,4],[4,-12],[6,-1],[8,7],[11,-18],[13,11],[6,2],[-4,-8],[2,-6],[5,7],[5,-5],[-2,-11],[7,-1],[3,14],[-5,3],[10,9],[4,-17],[3,7],[4,-11],[-12,-28],[4,-6],[-9,-21],[0,9],[-5,-6],[0,8],[-7,-9],[0,-26],[4,3],[-4,-29],[-3,-3],[-7,-24],[-4,-4],[2,-13],[22,-27],[0,-8],[10,-11],[4,-9],[7,1],[10,-14],[10,-7],[9,-21],[7,-8],[20,-9],[4,-7],[1,-15],[22,-24],[14,4],[10,13],[3,24],[7,18],[3,26],[3,9],[-2,9],[3,25],[5,20],[-4,40],[3,16],[-4,13],[1,21],[5,21],[-2,18],[6,14],[-2,11],[-5,-4],[6,28],[6,1],[-2,8],[6,41],[0,14],[5,2],[6,11]],[[5470,7982],[-2,-9],[5,-23],[3,-3]],[[5476,7947],[-3,-17],[-12,3],[-6,-6],[7,-3],[-5,-12],[-1,-22],[-9,-9]],[[5447,7881],[-19,-12],[-16,-2],[-9,-14],[-23,9]],[[5380,7862],[-32,7],[-12,17],[2,7],[-12,-5],[-17,-1],[-4,-11],[-15,6]],[[5290,7882],[-2,7],[-6,-8],[-16,12]],[[5266,7893],[-2,12]],[[5264,7905],[1,14]],[[5265,7919],[4,2]],[[5269,7921],[7,0],[8,-16],[6,15],[12,-1],[2,-7],[9,1],[9,10],[32,4],[6,-11],[3,9],[-5,5],[1,13],[-6,9],[4,7],[12,5],[4,16],[7,-3],[3,13]],[[5383,7990],[7,-9],[18,0],[7,11],[0,12],[11,-1],[20,-13],[10,3],[13,-6],[1,-5]],[[6281,7420],[-19,8],[-9,14],[-9,24]],[[6244,7466],[-1,3]],[[6289,7594],[9,-6],[11,-12],[5,-17],[16,-3],[5,15],[9,6],[5,16]],[[6349,7593],[15,-31],[1,-11],[10,-28],[15,-3],[8,-10],[-11,-3],[-13,-11],[0,-11],[-6,-28],[4,-11],[-5,0],[-1,-17],[-7,10],[-2,-43]],[[6357,7396],[-7,-2],[-6,12],[-11,12],[1,8],[7,2],[-5,18],[6,7],[-10,16],[-4,-1],[-26,-29],[-11,-17]],[[6249,7560],[8,10],[13,-8],[8,-9],[6,1],[6,-8],[4,3],[1,15],[-10,9],[-3,13],[7,8]],[[5848,5045],[-4,-15],[2,-14],[9,-5],[0,-17],[-9,-13],[-9,-34],[-11,-21],[-3,1]],[[5823,4927],[-9,39],[1,21],[-4,4]],[[5811,4991],[0,18],[-4,5],[-2,12]],[[5805,5026],[4,7],[5,-4],[0,-9],[11,1],[5,7],[1,21],[6,-6],[7,7],[4,-5]],[[5166,8104],[10,-14],[1,-10],[-8,-11]],[[5169,8069],[-7,-3],[-4,-16],[2,-14]],[[5160,8036],[-9,-3],[-4,10],[-13,7],[-1,21],[-9,-13],[-10,3],[2,15],[-5,5],[-10,0],[0,6],[-11,5],[-4,15],[-7,-6],[-7,8],[-2,15]],[[5070,8124],[16,14],[7,3]],[[5093,8141],[0,-6],[16,-3],[8,9]],[[5117,8141],[1,0]],[[5118,8141],[3,3],[16,-1],[7,-8],[9,0],[9,-11],[-6,-13],[10,-7]],[[5099,5856],[-3,-17],[7,-16],[0,-19],[3,-5],[-1,-16],[-5,0],[1,-14],[-3,-18],[-6,-3],[0,-9],[-5,-12],[-2,-20],[-8,-4],[-2,-15],[0,-41],[-1,-12],[2,-25],[1,-42],[-2,-18]],[[5075,5550],[-31,-9]],[[5044,5541],[5,3],[-5,18],[1,24],[0,73],[-1,5],[0,43],[-6,13],[-1,37],[-16,23],[0,19],[4,17]],[[5025,5816],[5,3],[1,13],[4,-1],[3,11],[6,-3],[11,2],[8,13],[3,14]],[[5066,5868],[-1,19],[14,10],[10,-21],[2,-8],[6,-4],[2,-8]],[[5006,6041],[-2,-21],[6,-16],[-1,-9],[7,-24],[5,0],[7,-13],[7,-7],[-9,-1],[0,-15],[6,-6],[11,-19],[8,-1],[3,7],[5,-3],[3,-15],[-6,-4],[10,-26]],[[5025,5816],[-12,0],[-18,8]],[[4995,5824],[-8,-3],[-5,-10],[-2,5],[-59,0],[-3,-22],[3,-11],[2,-25],[0,-24],[2,-5]],[[4925,5729],[-4,-4],[-10,24],[-6,5],[-10,1],[-11,-7],[-4,-11],[-11,3],[-4,12],[-3,-1],[-4,24],[-9,1],[-3,7]],[[4846,5783],[3,24],[-2,14],[6,9],[1,19],[-4,14],[8,10],[9,1],[10,18],[-1,24],[6,0],[0,14],[-3,11],[10,13],[15,-13],[5,7],[0,25],[6,-5],[5,21],[11,16],[12,-6],[1,16],[8,3],[11,13],[8,5],[8,15],[8,-4],[8,2],[11,-8]],[[7529,6456],[0,16],[3,-11],[-3,-5]],[[7521,6458],[-5,-7],[2,29],[-4,4],[3,11],[6,-20],[-2,-17]],[[7571,6448],[0,-29],[2,-10],[-12,7],[1,-20]],[[7562,6396],[1,-15],[-7,20],[-1,27],[-3,9],[-2,29],[-11,31],[-5,-14],[-9,0],[-8,26],[1,14],[-4,6],[-9,4],[11,-11],[-4,-10],[2,-12],[-3,-8],[5,-13],[-2,-18],[-6,-9],[-1,-11],[-7,1],[1,7],[-5,6],[-2,-15],[-12,-7],[0,14],[-4,-18],[-4,10],[-1,18]],[[7473,6457],[-6,48],[2,14],[-7,2],[3,13],[-6,8],[0,11],[5,8],[0,22],[-7,0],[-11,12],[-2,7],[4,12],[5,1],[3,18],[13,-1],[-3,18],[-8,1],[-3,11],[-9,14],[2,12],[5,4],[4,14],[5,-9],[11,-3],[7,-14],[7,-2],[2,15],[6,-18],[-2,-4],[1,-32],[15,-8],[23,2],[7,-3],[18,3],[11,-14],[-6,-2],[-5,-31],[-5,-2],[0,-9],[-8,2],[0,-6],[-7,0],[-7,-21],[2,-14],[9,-30],[7,5],[0,15],[5,8],[-1,11],[5,4],[8,-22],[0,-25],[3,-12],[3,-42]],[[5793,7702],[0,-17],[-11,-3],[-6,-14],[-2,-26],[-4,1],[-8,-16],[5,1],[11,-28]],[[5778,7600],[-13,-4],[-6,9],[-21,-5],[-7,-15]],[[5731,7585],[-8,0],[2,-21],[-25,-7],[-9,10],[-8,1],[-2,6],[-14,0],[-8,-7],[-13,0],[-10,-4]],[[5636,7563],[3,22],[-5,18],[-9,5],[-5,11]],[[5620,7619],[5,6],[-3,23],[9,5],[7,17],[-13,15],[-4,15],[1,17],[8,13]],[[5630,7730],[9,-8],[-4,-15],[17,3],[18,-8],[10,3],[21,-5],[4,-4],[11,5],[9,16],[25,10],[10,-10],[15,-2],[8,-13],[10,0]],[[6402,6694],[3,0],[0,-24],[-4,8],[1,16]],[[2971,6401],[-3,-10],[-15,-3],[-1,6],[9,10],[4,-4],[6,12],[0,-11]],[[2969,6475],[8,-3],[-7,-3],[-1,6]],[[2948,6491],[0,-14],[-5,9],[5,5]],[[2889,6546],[9,-13],[-10,9],[1,4]],[[2908,6546],[6,-21],[0,-8],[7,-10],[0,-8],[-7,15],[-1,14],[-5,18]],[[2840,6572],[6,0],[0,-20],[-8,5],[-3,13],[5,2]],[[2908,6577],[-3,0],[-4,16],[7,-16]],[[2830,6632],[3,0],[8,-40],[-8,-11],[-10,14],[7,37]],[[2869,6655],[0,-4],[16,-20],[-1,-29],[-2,7],[3,17],[-6,14],[-11,8],[1,7]],[[2819,6722],[15,-4],[-21,-5],[6,9]],[[2839,6733],[5,0],[16,-25],[0,-11],[-4,-3],[0,-19],[-6,5],[4,8],[0,18],[-8,23],[-7,4]],[[5528,7765],[9,0],[-7,-29],[14,-17],[-10,-5],[7,-13],[-1,-8],[-7,-3]],[[5533,7690],[-8,-3],[0,-8],[-7,-6],[-1,-13],[-4,0],[-1,-26]],[[5512,7634],[-22,19]],[[5490,7653],[-2,3]],[[5488,7656],[0,8],[-35,57],[-8,32],[-7,3],[0,29],[6,2],[10,-12],[3,10],[9,-1],[4,7],[4,-7],[22,-6],[4,4],[19,-3],[2,-11],[7,-3]],[[5781,8416],[4,-6],[9,3],[3,-8],[9,4],[11,-6],[1,-13],[12,9],[16,-3],[11,-11],[-2,-19],[6,-15],[-7,-13],[11,-10],[-3,-7],[7,-14],[15,-15],[-3,-11],[10,1],[11,-9],[6,-11],[-15,-22],[-22,5],[-4,-9],[8,-10],[2,-30],[5,-13]],[[5882,8183],[-23,-2],[-12,-29],[3,-14],[-7,-1],[-6,11],[-15,-1],[-9,-6],[-5,14],[-13,-11],[-11,13],[-16,-10],[1,7],[-13,0],[-1,7],[-21,5],[-10,6],[-28,2],[-19,-4],[-11,-18],[-11,3],[0,-5]],[[5655,8150],[0,34],[-12,10],[6,13],[15,11],[0,18],[-7,25],[-5,28]],[[5652,8289],[20,1],[5,-4],[12,5],[-1,7],[19,11],[1,-8],[8,6],[-7,3],[9,37],[8,1],[3,10],[9,-1],[6,10],[-8,1],[2,20]],[[5738,8388],[11,10],[17,-2],[8,17],[7,3]],[[2547,6247],[-3,-6],[9,0],[-1,-18],[-5,-28],[4,-4],[-4,-10],[2,-16],[-2,-24],[-7,-21],[-5,-2],[-5,-20]],[[2530,6098],[-9,0],[2,51],[0,60]],[[2523,6209],[4,10],[4,-6],[9,26],[0,6],[7,2]],[[3084,4249],[-4,-1]],[[3080,4248],[4,1]],[[3384,4022],[-1,21],[-24,29],[-24,0],[-51,-22],[-4,-23],[-10,-28],[0,-29],[-8,-54],[-3,-14]],[[3133,3869],[-10,-5],[-9,4],[1,16],[-3,11],[0,16],[-4,7],[-3,23],[0,15],[-6,20],[-4,2],[2,18],[-6,6],[1,10],[-3,14],[6,2],[1,8],[-5,11],[7,16],[-13,23],[-3,34],[-3,18],[2,6],[-7,5],[0,8],[-5,18]],[[3069,4175],[-4,17],[7,8],[10,30]],[[3082,4230],[5,-3],[-1,11],[8,5],[0,6],[-7,0],[-1,9],[4,4],[-7,3],[0,7],[-10,17]],[[3073,4289],[6,16],[-7,15],[6,28],[5,6],[3,20],[-6,22],[4,8],[-1,36],[7,11],[2,12],[-16,55],[-9,34]],[[3067,4552],[23,-3],[-1,-8],[10,6],[9,20],[11,3],[11,19],[7,3],[11,20],[19,8],[7,1],[4,-5],[5,9],[3,-32],[-4,-13],[3,-21],[-2,-18],[2,-19],[3,-2],[1,-14],[4,-2],[1,-12],[5,-1],[4,-10],[6,-4],[1,-11],[13,-4],[4,4],[10,-7],[4,-8],[5,4],[9,-20],[4,1],[8,-10],[7,0],[0,-6],[8,-17],[22,4],[18,-27],[-2,-20],[5,-18],[1,-28],[-9,-1],[9,-20],[3,-47],[47,-4],[3,3],[0,-13],[-4,-8],[2,-34],[11,-15],[6,-1],[0,-8],[6,-27],[0,-10],[-6,-46],[-9,-38],[7,-13],[-8,-10]],[[3651,3581],[1,22],[3,0],[-4,-22]],[[3650,3661],[-4,8],[6,7],[-2,-15]],[[3919,4412],[0,-16],[-4,16],[4,0]],[[3660,5124],[-3,3],[4,9],[-1,-12]],[[3588,5149],[0,-7],[-8,-7],[1,9],[7,5]],[[3577,5151],[2,-5],[-4,-19],[-3,-11],[-15,-19],[0,13],[7,10],[0,14],[2,11],[8,8],[3,-2]],[[3573,5156],[5,19],[0,-10],[-5,-9]],[[3608,5175],[11,-6],[9,5],[27,-7],[-2,-14],[-1,-20],[-4,-14],[-5,-5],[0,-14],[-7,-5],[-3,7],[0,-11],[-9,1],[-6,-12],[-14,3],[-4,-6],[-5,2],[-7,28],[1,13],[6,-5],[1,8],[-7,-1],[0,23],[2,17],[4,10],[5,5],[8,-2]],[[3586,5165],[-4,4],[1,13],[7,3],[2,-9],[-6,-11]],[[3625,5187],[3,-5],[-2,-7],[-11,2],[10,10]],[[3599,5183],[-5,0],[-2,9],[6,-1],[1,-8]],[[3624,5200],[-6,-5],[-3,-12],[-14,0],[-1,12],[8,1],[15,9],[1,-5]],[[3600,5213],[1,-14],[-2,-7],[0,23],[1,-2]],[[3609,5216],[-6,-13],[1,14],[5,-1]],[[3608,5236],[0,-10],[-5,0],[5,10]],[[3600,5305],[1,-11],[-5,4],[4,7]],[[3431,5295],[13,-7],[2,14],[-6,10],[5,17],[6,-8],[11,2],[0,4],[10,2],[8,-5],[3,-7]],[[3483,5317],[3,-7],[8,-3],[7,3],[6,9],[5,-7],[6,5],[9,-9],[9,11],[8,31],[1,14],[4,7],[15,44]],[[3564,5415],[5,24],[8,-16],[1,-21],[3,4],[-1,-29],[3,-31],[7,-22],[1,-18],[6,-18],[13,-4],[4,-8],[0,-19],[-7,-4],[7,-3],[-11,-17],[-5,-12],[-4,-17],[-5,-11],[-5,-1],[-9,-17],[-4,-19],[-8,-19],[0,-14],[-7,-8],[-1,-13],[-6,4],[-14,-13],[13,2],[0,-10],[9,7],[7,10],[11,11],[13,17],[-5,-12],[5,-5],[0,-14],[4,-9],[0,-11],[7,-14],[4,9],[6,4],[5,-7],[12,10],[1,-7],[-5,-41],[2,-2],[8,40],[7,18],[2,-8],[8,21],[3,-12],[1,19],[4,-2],[4,16],[1,15],[5,0],[5,12],[2,-11],[4,10],[11,-7],[19,-9],[0,-10],[7,-6],[8,5],[1,-7],[10,-9],[1,-8],[6,9],[-2,-11],[1,-13],[3,11],[5,4],[10,-14],[-3,-5],[6,-1],[3,-8],[-5,-16],[5,5],[3,-14],[-4,0],[-5,-36],[2,-9],[6,14],[1,23],[8,8],[1,-9],[-7,-12],[7,-2],[2,14],[9,4],[6,-4],[-1,12],[4,0],[18,-13],[6,-11],[15,-5],[3,6],[5,-9],[29,4],[3,2],[14,-3],[25,-31],[3,-1],[8,-15],[5,-2],[11,-27],[14,-26],[9,-6],[4,-12],[6,-1],[6,-8],[16,-1],[5,3],[13,-6],[4,-13],[9,-57],[1,-24],[5,-21],[-1,-53],[-7,-40],[-7,-25],[-10,-27],[-3,5],[-2,-16],[-12,-24],[-3,-13],[-10,-10],[-5,-9],[-11,-37],[-15,-52],[-13,-34],[-5,0],[0,14],[-4,9],[-4,-16],[0,-17],[-4,-7],[0,-27],[-2,-5],[2,-28],[-3,-20],[2,-9],[0,-24],[2,-28],[2,-6],[-4,-25],[-6,-53],[1,-31],[-2,-9],[-7,-8],[-7,-30],[2,-51],[-3,-13],[-6,-6],[-9,-44],[-13,-31],[-8,-25],[4,-27],[-5,-10],[-12,-7],[-13,-20],[0,-21],[-17,1],[-11,-3],[0,18],[-7,-5],[2,-13],[-22,-7],[10,7],[-9,3],[-8,-7],[-2,7],[-9,-7],[1,-17],[-10,-3],[-2,-6],[-10,-7],[-1,-11],[-12,4],[-8,-7],[-1,-7],[-11,-6],[-11,-13],[-5,-12],[-10,-9],[-10,-15],[-1,-15],[-8,-7],[-6,4],[1,-17],[-4,-17],[-1,-19],[-5,-6],[4,-6],[-3,-16],[3,-6],[2,-32],[-2,-52],[-4,-17],[-17,-23],[-5,-12],[-14,-39],[-8,-37],[-10,-34],[-12,-25],[-22,-27],[-3,-9],[0,17],[5,-4],[11,20],[5,3],[4,11],[-1,12],[5,1],[0,10],[9,9],[-1,22],[4,-6],[1,12],[-12,-4],[-9,8],[3,-7],[-6,-21],[-1,-24],[-6,-10],[-9,-4],[-3,-21],[-4,-3],[-1,-14],[5,-10],[-5,-7],[-6,-30],[-7,-26],[-18,-28]],[[3517,3240],[-4,10]],[[3513,3250],[2,1],[1,23],[5,4],[2,13],[5,6],[5,-10],[6,18],[-4,16],[-12,-19]],[[3523,3302],[-11,11],[-5,23],[-15,14],[-9,21],[-8,3],[-4,8],[-7,3],[-2,10],[-8,11],[-6,-13],[-4,0],[0,16],[-23,40],[-7,0],[-2,-8],[-11,-2],[-2,6]],[[3483,3710],[0,8]],[[3483,3718],[5,3],[0,26],[4,16],[0,34]],[[3492,3797],[-9,15],[-10,-10],[-13,1],[-3,21],[1,11],[-4,23],[1,21],[-7,19],[-9,1],[-6,12],[-12,-10],[-31,8],[0,36],[3,16],[-9,61]],[[3067,4552],[-11,2],[-7,-8],[-12,3],[0,41],[1,29],[2,20],[-10,-14],[-2,-7],[-9,-11],[-25,0],[-3,27],[-14,7],[-11,0],[7,16],[0,8],[-6,17],[-4,2],[-1,11],[-5,6],[-2,15],[-5,9],[2,9],[-8,14],[1,11],[7,2],[-3,13],[2,13],[11,17],[5,3],[1,12],[-3,14],[8,24],[1,30],[14,14],[14,21],[17,5],[10,6],[5,11],[9,1],[3,-6],[10,-5],[0,5]],[[3056,4939],[6,58],[0,9],[5,46],[0,10],[5,54],[-4,13],[-2,24],[-13,21],[1,42],[12,4],[3,5],[10,-6],[-2,21],[-4,4],[-14,0],[0,37],[8,4],[5,-3],[34,0],[-1,16],[7,-15],[5,4],[9,19],[4,-5],[7,-29],[-1,-21],[6,2]],[[3142,5253],[11,-21],[10,-7],[10,14],[6,-1],[-1,-17],[11,17],[1,10],[11,6],[10,16],[0,-8],[9,16],[0,14],[19,16],[1,14],[-20,4],[2,15],[-6,20],[0,30],[-13,22],[-4,12],[2,5],[4,-10],[12,0],[4,-14],[10,4],[4,-5],[4,7],[4,-5],[7,-18],[7,5],[-1,20],[6,1],[4,9],[7,-6],[18,12],[0,6],[16,10],[10,22],[-2,13],[-3,1]],[[3312,5482],[11,0],[3,4],[8,-12],[-3,-33],[6,0],[5,-8],[-2,-8],[4,-14],[0,-10],[-7,-12],[1,-13],[-4,-17],[-1,-22],[2,-17],[5,-5],[0,-26],[6,-8],[8,-19],[8,-4],[4,-7],[8,5],[0,10],[5,9],[9,-5],[6,11],[7,0],[3,11],[9,7],[9,-8],[9,4]],[[3347,5935],[-4,3],[0,13],[6,-10],[-2,-6]],[[8198,5465],[5,-34],[-7,5],[-2,24]],[[8194,5460],[4,5]],[[8166,5448],[6,-1],[7,5],[7,12],[9,10],[-2,-10]],[[8193,5464],[-7,-9],[2,-17],[0,-14],[-7,-10],[-7,23],[-8,11]],[[7545,6781],[-2,-8],[5,-11],[6,3],[3,-10],[-3,-11],[3,-13],[-5,-4],[-33,-3],[-10,8],[-6,-9],[-11,-3],[-12,9],[-6,-2],[-7,7],[-3,12],[4,10]],[[7468,6756],[3,13],[13,29],[11,14],[12,3],[0,-5],[9,-1],[-4,-10],[18,-5],[5,6],[10,-8],[0,-11]],[[5701,4158],[-1,-8],[8,-27],[7,-13],[6,-21],[4,-29],[8,-13],[14,-17],[7,-3],[3,-9],[0,-15],[12,-1],[-1,-34],[6,-12],[3,-15],[18,-5],[12,-10],[1,-14],[7,-7]],[[5815,3905],[-9,-3],[-3,-13],[-8,-7],[-12,-4],[-12,-27],[-5,-6],[-2,-10],[-11,-7],[-4,-13],[-5,-31],[-8,-10],[-3,-10],[-15,-6],[0,-10],[-8,-41],[-5,-7],[-10,1],[-4,-5],[-17,5],[-10,6],[-13,20],[-7,1],[-7,-5],[-6,-23],[0,-14],[-6,-13],[-8,-7],[-6,-18],[-7,-2],[-2,-10],[-15,0],[-15,4],[0,21],[5,11],[0,19],[-4,13],[-1,14],[-10,29],[-8,10]],[[5554,3757],[0,159],[28,0],[0,212],[23,4],[21,9],[21,5],[9,-27],[15,26],[7,4],[4,-6],[7,13],[12,2]],[[5634,5812],[4,-14],[8,-14],[10,-31],[1,-16],[-1,-21],[-5,-6],[3,-9],[-2,-17],[19,-1]],[[5671,5683],[2,-7],[-4,-11],[3,-6],[16,-5],[8,-17],[5,-3],[1,-11],[-4,-4],[6,-14],[18,-19],[2,-10],[8,-10],[-2,-16],[8,-21],[6,-2],[13,-23],[-1,-15],[6,-14]],[[5762,5475],[-12,7],[-4,-8],[-10,-1],[-12,12],[-6,-3],[-11,9],[-4,-5],[0,-13],[-18,-7],[-5,11],[-6,-10],[-27,-19],[-12,12],[-9,-34],[-3,-5],[-23,9],[-2,-3],[-20,12],[-7,-2],[-6,20],[-13,14],[-3,7],[-10,1],[-17,-34],[-1,-7],[-6,-3],[2,-12],[-1,-27],[1,-13]],[[5517,5383],[-4,9],[-11,-4],[-16,7],[-8,-6],[-15,-2],[-4,-7],[-3,-27],[1,-7],[-8,-34]],[[5449,5312],[-2,8],[0,26],[-4,13],[-5,3],[-15,32],[-6,21],[4,1],[-3,14],[-10,19],[-1,31],[-4,6],[2,8],[1,27],[-7,10],[10,13],[5,24],[3,4],[6,30],[6,14]],[[5429,5616],[9,-4],[7,8],[10,5],[4,11],[2,-12],[5,-7],[23,26],[7,-2],[5,4],[15,1],[15,36],[-6,7],[0,8],[5,5],[17,0],[10,7],[9,-1],[4,12],[8,5],[5,19],[13,24],[5,4],[3,10],[-1,14],[8,5],[0,5],[14,9],[9,-3]],[[2957,7804],[-12,-5],[13,16],[-1,-11]],[[2699,7829],[2,-7],[13,9],[3,-9],[5,9],[9,-4],[2,-11],[-7,-12],[-23,15],[-15,6],[11,4]],[[2665,7849],[6,-2],[-2,-11],[-4,13]],[[3319,7889],[6,-10],[-2,-13],[-7,-22],[5,3],[-19,-34],[10,5],[9,11],[-10,0],[12,21],[4,-8],[11,0],[-7,-23],[-16,-12],[-6,3],[-13,-5],[-5,21],[1,13],[6,7],[10,30],[7,14],[4,-1]],[[3221,7879],[6,-21],[3,6],[12,-8],[33,3],[3,-3],[-17,-10],[4,-13],[-11,-3],[-2,12],[-19,2],[-4,11],[-11,0],[2,14],[-9,-1],[4,16],[7,9],[-1,-14]],[[3503,7956],[10,3],[-1,-7],[-9,4]],[[2562,7993],[-9,-6],[0,8],[9,-2]],[[2924,7774],[20,14],[8,11],[6,0],[2,17],[7,17],[14,11],[5,9],[17,17],[5,-2],[32,22],[14,22],[0,4],[14,20],[0,5],[16,23],[21,20],[44,28],[28,8],[18,-3],[10,-5],[11,-14],[1,-8],[-11,8],[11,-15],[-4,-13],[-11,-4],[-1,-6],[-18,-13],[-16,11],[-3,-5],[-11,0],[18,-11],[9,-15],[8,9],[12,0],[3,-6],[-7,-14],[-1,-10],[-11,-13],[16,0],[-3,-15],[11,-32],[20,-8],[-8,-6],[7,-7],[10,0],[4,-9],[5,5],[24,-6],[10,10],[5,-15],[7,3],[7,-12],[-7,-5],[14,-3],[-1,-4],[-18,-7],[0,-3],[-32,-21],[-9,4],[-4,-9],[-8,1],[1,-9],[-11,0],[1,10],[-9,-5],[-4,-8],[2,-10],[-6,-5],[-8,-19],[-9,-10],[-6,1],[-9,-11],[-5,14],[-9,5],[-1,14],[7,29],[21,24],[22,18],[1,-13],[7,8],[20,9],[-34,2],[-5,-6],[-4,6],[13,15],[-3,9],[-5,-12],[-16,-9],[-17,-16],[-4,4],[-10,-10],[-12,-1],[-8,6]],[[3134,7784],[-9,6],[1,19]],[[3126,7809],[-10,9]],[[3116,7818],[1,1],[-1,74],[-14,17],[-16,-11],[-9,17],[-19,-37],[-4,-23],[-7,-12],[1,-17],[-12,-20],[1,-11],[-18,-5],[-6,-16],[-89,-1]],[[1546,8044],[6,-11],[-14,13],[8,-2]],[[1479,8054],[4,-13],[-7,0],[-4,9],[7,4]],[[3218,8058],[33,-11],[15,-14],[11,-6],[10,-14],[-16,-6],[-24,11],[-14,9],[-2,9],[-22,16],[9,6]],[[1494,8104],[-11,-4],[6,9],[5,-5]],[[1448,8112],[20,-17],[22,-5],[26,-13],[5,-19],[9,-12],[4,-16],[22,-13],[10,-22],[8,-25],[-6,-6],[-11,3],[-22,14],[-14,12],[9,11],[-18,-4],[-9,9],[4,11],[-8,0],[-1,10],[-14,-3],[0,11],[7,3],[-8,5],[-1,10],[-15,-2],[-33,43],[-2,7],[16,8]],[[3447,8155],[6,-8],[7,7],[-5,-17],[-12,4],[2,-12],[7,-5],[-28,-60],[-3,-27],[6,13],[13,21],[12,-13],[7,0],[-17,-14],[11,-17],[15,9],[-2,-16],[12,1],[8,14],[9,-8],[5,3],[15,-10],[-4,-13],[-17,-15],[10,3],[-3,-15],[12,-7],[3,10],[4,-6],[7,9],[-5,-19],[-11,-9],[-7,0],[6,-14],[-6,-9],[8,-15],[2,13],[6,14],[12,6],[-9,-18],[-1,-22],[8,8],[3,14],[5,-19],[-5,-10],[-2,-19],[-5,-17],[-6,3],[-10,-3],[4,26],[-2,5],[-14,-23],[-4,1],[8,31],[1,14],[-5,15],[-18,-29],[-10,-9],[0,-8],[-8,-11],[-9,-1],[-9,5],[3,7],[11,3],[15,28],[-11,3],[-6,-12],[-10,12],[-28,-4],[-25,3],[-6,4],[-18,-6],[-15,-2],[-4,17],[27,37],[-9,3],[-14,-6],[8,9],[6,-3],[9,33],[10,-9],[-2,9],[8,4],[-11,4],[25,78],[8,11],[8,28],[24,18]],[[1448,8147],[-7,0],[2,14],[5,-14]],[[1445,8181],[-2,-17],[-4,14],[6,3]],[[2798,8181],[-3,-7],[-8,3],[11,4]],[[1462,8192],[-15,-17],[2,14],[17,12],[-4,-9]],[[1430,8212],[1,-9],[-8,2],[7,7]],[[2738,8248],[8,-1],[10,-15],[3,-12],[-10,1],[-29,15],[6,10],[12,2]],[[1339,8249],[4,-12],[-6,-9],[6,-21],[17,-18],[-5,-5],[-20,26],[-16,32],[20,7]],[[1427,8244],[3,-10],[-2,-21],[-14,7],[-3,12],[2,20],[14,-8]],[[1419,8255],[-7,1],[4,10],[3,-11]],[[1382,8268],[9,-8],[5,-15],[-7,0],[-15,26],[8,-3]],[[1386,8270],[-9,4],[2,6],[7,-10]],[[1395,8273],[11,-17],[-5,-9],[-21,36],[3,5],[12,-15]],[[1380,8293],[-2,-10],[-7,7],[9,3]],[[1305,8302],[20,-3],[5,-14],[-15,-10],[13,-2],[2,21],[12,6],[-8,-28],[0,-22],[-13,-7],[-9,10],[7,6],[-11,3],[-7,25],[4,15]],[[2815,8428],[-1,-10],[-7,-3],[4,17],[4,-4]],[[2787,8429],[-11,-11],[1,8],[10,3]],[[2801,8446],[-3,-6],[9,-8],[-12,-27],[-8,-3],[2,12],[-9,-16],[-3,4],[14,23],[3,-5],[3,26],[4,0]],[[3293,8462],[1,-19],[-7,7],[6,12]],[[3204,8666],[5,-10],[-11,7],[6,3]],[[3109,8672],[7,-7],[-4,-10],[-10,-6],[-3,7],[5,16],[5,0]],[[3200,8731],[-2,-16],[-16,19],[18,-3]],[[2793,8775],[5,-7],[-8,-30],[-8,-9],[-10,11],[-2,14],[12,23],[11,-2]],[[3203,8784],[8,0],[-6,-10],[-9,3],[7,7]],[[3033,8802],[15,-11],[0,-7],[-13,1],[-7,15],[5,2]],[[2719,8809],[7,-3],[-2,-12],[-27,-27],[-23,-5],[-6,18],[18,27],[8,-5],[9,6],[16,1]],[[2822,8839],[21,-4],[4,-9],[-13,-10],[-16,17],[4,6]],[[3216,8833],[-8,14],[5,2],[3,-16]],[[2857,8849],[12,-6],[0,-11],[-20,14],[8,3]],[[3204,8862],[4,-12],[-12,8],[8,4]],[[3186,8910],[2,-6],[-13,-6],[11,12]],[[2625,8972],[12,-9],[-7,-5],[11,-20],[9,16],[14,-17],[20,-4],[4,-10],[19,-12],[5,2],[16,-14],[5,-23],[19,-8],[-1,8],[22,-21],[-8,-2],[-19,-16],[-26,14],[-12,-1],[-1,17],[-15,-1],[2,13],[-19,-10],[2,-14],[-19,-8],[-9,-19],[-25,-10],[-5,33],[-27,-2],[-14,-5],[8,20],[20,13],[-6,24],[6,15],[0,28],[5,23],[13,12],[1,-7]],[[2638,8984],[9,-10],[0,-16],[-12,13],[3,13]],[[2657,8990],[18,-11],[-3,-6],[15,-10],[-15,2],[-15,25]],[[2936,9103],[24,-5],[1,-12],[-28,0],[-10,16],[13,1]],[[2601,9095],[-7,-12],[-8,5],[-3,16],[9,13],[7,-6],[2,-16]],[[2900,9117],[16,-9],[-4,-11],[3,-24],[-9,-11],[-14,-6],[-31,-1],[-7,12],[0,22],[15,25],[31,3]],[[2096,9122],[-15,8],[14,1],[1,-9]],[[2919,9131],[3,-14],[-16,10],[2,12],[11,-8]],[[2173,9144],[-3,-12],[-12,5],[15,7]],[[2218,9152],[-13,-10],[2,17],[11,-7]],[[2820,9179],[-10,-28],[-16,-3],[26,31]],[[2860,9180],[10,-6],[-13,-11],[-6,16],[9,1]],[[2315,9189],[14,0],[-4,-11],[-10,11]],[[2342,9191],[8,-12],[-14,-3],[6,15]],[[3114,9197],[-2,-10],[-10,3],[12,7]],[[2834,9196],[-16,-12],[-9,1],[20,15],[5,-4]],[[2787,9204],[9,-8],[-21,-3],[4,-8],[-24,10],[16,8],[16,1]],[[2294,9191],[5,5],[10,-12],[22,-14],[6,-20],[18,-3],[-17,-6],[-13,-15],[-33,4],[-9,7],[-25,7],[-3,8],[-11,-6],[-11,11],[33,17],[-4,16],[12,-9],[-6,16],[10,11],[18,-11],[-2,-6]],[[3004,9275],[14,-3],[-20,-12],[-5,8],[11,7]],[[2924,7774],[-11,-4],[-19,-25]],[[2894,7745],[-6,-7],[-19,-10],[-11,-18],[-17,9],[-5,-3],[-30,-8],[-17,-15],[-5,-17],[13,-6],[7,4]],[[2804,7674],[-1,-9]],[[2803,7665],[5,-11],[-36,-7],[-9,-13],[-11,6],[-12,-1],[-32,-36],[-12,-2],[-5,4],[0,12],[5,4],[13,-1],[1,10],[-6,4]],[[2704,7634],[5,9],[1,17]],[[2710,7660],[8,4],[12,20],[-1,38],[4,14],[9,16],[0,12],[-12,25],[11,0],[1,-14],[14,-17],[18,-14],[0,17],[4,6],[6,-5],[-9,17],[2,14],[-10,3],[-10,32],[-12,0],[-10,8],[-39,6],[-3,0],[-30,10]],[[2663,7852],[0,10],[-10,-4]],[[2653,7858],[-3,4],[4,24],[-8,1],[3,23],[-11,14],[5,20],[-25,0],[-8,9],[-12,39],[-22,-2],[-24,14],[-2,-22],[-7,-2],[3,15],[-6,-2],[-5,-26],[-5,-3],[3,16],[-10,-5],[-5,-22],[-7,-6]],[[2511,7947],[-9,-1],[-4,7],[-20,0],[-2,7],[-16,-11],[-8,4],[-10,14],[-8,-7],[-3,12],[-14,11],[-22,-6],[-3,7],[-17,3],[-6,5],[-4,31],[-9,3],[0,-22],[-79,0],[-80,0],[-55,0],[-79,0],[-79,0],[-49,0],[-49,0],[-80,0],[-61,0],[-74,0],[-81,0]],[[1590,8004],[-8,0]],[[1582,8004],[-1,0]],[[1581,8004],[-7,20],[2,14],[-8,-11],[-12,8],[-1,15],[-14,0],[-6,8],[3,18],[-3,5],[-9,0],[-20,12],[-13,-2],[6,17],[-14,1],[-10,6],[-4,-6],[-14,11],[-8,12],[9,23],[13,3],[-9,3],[-10,-15],[-4,12],[0,14],[19,25],[0,13],[-12,-16],[-7,-5],[-8,17],[-4,-12],[4,26],[-10,9],[-10,34],[10,-5],[-8,12],[5,21],[-17,-20],[-3,-14],[-21,32],[-4,26],[-6,-3],[1,17],[7,4],[10,33],[-5,0],[-4,28],[2,8]],[[1387,8402],[0,0]],[[1387,8402],[-1,12],[-9,1],[-9,13],[-10,3],[-14,11],[-7,0],[0,11],[-7,4],[2,10],[-29,56],[-20,40],[-12,8],[-4,12],[-21,22],[3,8],[-13,13],[-25,-11],[-2,-20],[-27,-20],[-5,17],[-43,50],[3,16],[-17,-1],[-9,-8],[-12,6],[-16,1],[0,538]],[[1083,9194],[29,-2],[23,-6],[15,-16],[50,-21],[26,2],[-3,18],[20,5],[-1,8],[29,8],[12,-5],[-9,-9],[24,4],[10,14],[16,0],[45,28],[22,-4],[5,11],[9,-11],[-45,-25],[-27,-6],[-3,-10],[-18,-6],[-4,-15],[-9,3],[-4,-11],[24,-3],[-11,15],[29,13],[15,12],[12,-9],[14,21],[35,9],[0,-10],[23,16],[-2,9],[22,7],[-13,3],[0,17],[23,-16],[14,-32],[15,-16],[20,-9],[9,4],[-8,12],[10,9],[8,18],[10,-1],[-2,-19],[12,0],[-13,-19],[24,-2],[14,8],[6,20],[36,-3],[23,-10],[23,-16],[31,-5],[23,-13],[57,-13],[-9,8],[11,4],[38,-17],[18,-18],[-3,-9],[-26,2],[-8,-18],[-9,-3],[47,-13],[40,-1],[3,4],[36,1],[22,14],[13,-16],[18,0],[7,-21],[6,15],[20,-23],[-7,-21],[25,-29],[-12,23],[1,18],[16,-14],[-4,15],[-9,8],[0,15],[-12,12],[7,19],[35,18],[21,5],[1,13],[-24,-7],[2,-8],[-22,-7],[-16,5],[7,-11],[-22,-3],[-2,12],[-10,-3],[14,20],[27,5],[31,14],[12,-3],[9,-11],[4,-20],[19,-6],[4,-12],[20,-1],[9,8],[5,-11],[27,-14],[21,-3],[23,10],[26,-1],[15,-7],[25,5],[22,-12],[12,11],[-16,12],[-10,-9],[-10,10],[3,9],[-11,11],[27,1],[-8,9],[21,-3],[5,-12],[18,3],[-11,-15],[26,12],[-16,-41],[11,-19],[10,8],[11,-20],[4,16],[-15,26],[7,19],[17,-3],[18,14],[18,33],[-10,8],[-5,-13],[-15,0],[11,34],[18,-2],[2,13],[-22,-5],[-9,14],[-7,-7],[-25,10],[-21,22],[1,14],[9,15],[-12,9],[5,30],[14,6],[8,-7],[5,12],[-13,4],[18,9],[2,13],[18,3],[4,-19],[7,7],[32,-24],[4,-30],[37,-41],[-25,2],[-4,-6],[18,-3],[-25,-18],[20,-9],[18,7],[10,-9],[19,-1],[-23,-12],[14,-11],[6,-20],[-2,-17],[9,-12],[11,12],[4,31],[11,15],[9,1],[28,-27],[5,-32],[-16,2],[1,-19],[8,-19],[17,-15],[-1,-14],[15,7],[-3,7],[14,-1],[1,20],[17,23],[7,37],[25,0],[-10,13],[11,7],[-20,11],[-2,10],[6,23],[7,-4],[20,5],[16,-9],[30,-1],[15,-23],[22,-5],[-6,-12],[-12,-5],[20,-5],[1,-10],[-20,-13],[-17,6],[-2,-7],[18,-11],[-5,-13],[26,-30],[-7,-27],[-13,-1],[-17,-24],[-12,-1],[-10,-11],[-25,21],[16,-30],[-4,-2],[-19,14],[4,-14],[-25,7],[-5,17],[-19,-5],[-18,2],[7,-12],[19,-9],[-16,-15],[-3,-13],[-23,-20],[-16,0],[-17,15],[-31,20],[-10,-3],[-30,2],[32,-7],[14,-11],[11,-16],[56,-5],[2,-11],[-16,-20],[-14,-27],[-18,-15],[-24,1],[-12,10],[4,-14],[-10,-17],[-21,-3],[-19,10],[-14,0],[-37,16],[-8,-2],[11,-10],[4,5],[31,-11],[-10,-11],[18,11],[6,-8],[25,-12],[2,-18],[-22,-16],[-19,5],[-10,-3],[15,-16],[-19,5],[-2,-20],[-8,-12],[-18,-12],[11,-4],[-17,-12],[-19,-60],[-8,-31],[3,-40],[-3,-17],[13,-17],[3,4],[29,-1],[2,-15],[10,-37],[9,-24],[-3,-25],[12,2],[30,12],[15,-3],[15,-12],[30,-8],[12,-15],[13,-10],[7,-15],[10,-12],[11,-1],[32,-17],[21,-20],[12,-3],[19,5],[15,-6],[12,1],[18,-9],[3,-14],[-6,-25],[0,-12],[8,-17],[-2,-23],[3,-13],[-5,-19],[20,-28],[6,-21],[10,-5],[15,-30],[1,-10],[19,-11],[1,16],[10,15],[11,-20],[6,11],[-9,15],[13,19],[2,22],[-6,4],[1,19],[-5,0],[-5,42],[-2,32],[-7,2],[-6,25],[-5,1],[39,22],[16,14],[19,23],[12,21],[4,16],[0,44],[-8,34],[-9,20],[-24,23],[-13,16],[-2,16],[22,21],[-1,20],[14,6],[-1,13],[-7,2],[-7,35],[6,6],[-16,2],[10,15],[2,20],[6,5],[-13,13],[-4,34],[18,16],[21,-4],[32,-14],[34,-1],[14,12],[18,-9],[17,-14],[-1,-8],[30,-19],[-9,-10],[14,-16],[23,-5],[11,2],[2,-11],[12,-1],[2,12],[5,-18],[-12,-15],[6,-26],[2,-26],[-6,-6],[3,-9],[11,-2],[-8,-8],[2,-18],[-19,-7],[10,-3],[15,12],[13,1],[11,-6],[5,-24],[7,10],[9,-20],[28,15],[6,21],[10,-9],[5,18],[7,3],[-2,12],[8,8],[-3,22],[8,2],[7,25],[14,2],[0,-12],[9,-6],[-1,-17],[6,0],[5,-15],[12,-13],[-11,-9],[13,3],[1,-13],[7,1],[4,-11],[-9,-11],[16,0],[-2,-19],[15,-12],[7,-20],[-14,-11],[10,2],[6,-6],[-6,-7],[18,-7],[-8,-18],[-7,0],[5,-13],[-9,-4],[11,-10],[-12,-2],[5,-5],[14,1],[-3,-13],[10,-2],[1,-7],[22,-5],[-4,-5],[3,-16],[-4,-16],[20,12],[-2,-10],[10,-5],[10,9],[6,-22],[30,-6],[14,-10],[-9,-11],[-15,-1],[-1,-6],[-33,-12],[21,5],[3,-3],[-30,-15],[-13,-3],[2,-15],[-11,-14],[38,24],[6,15],[19,9],[-5,7],[24,-1],[11,-22],[-12,-11],[6,-9],[9,15],[30,-19],[4,-15],[-6,-7],[5,-9],[-7,-12],[8,-9],[4,-17],[-8,-15],[-20,-17],[-10,-13],[-8,5],[-25,-14],[-8,3],[-7,-12],[-8,-5],[1,-12],[-13,-8],[0,-8],[-11,-6],[-3,-10],[-38,-3],[-10,-5],[-6,7],[-51,4],[-26,-2],[-37,0],[-5,-5],[-8,5],[-19,-25],[-3,-23],[-4,-6],[-19,-3],[-4,-11],[-24,-18],[-10,-28],[-7,-9],[-19,14],[-5,-2],[22,-14],[-5,-20],[-10,-17],[-6,-3],[-6,-17],[-17,-23],[-15,-1],[-21,-24],[-10,-4],[-7,-18],[-12,-11],[-7,-11],[-6,-2],[5,-8],[-15,-12],[-6,-8]],[[1827,9404],[6,-29],[-17,-11],[32,3],[-4,6],[17,15],[49,-17],[-3,-15],[17,6],[18,-8],[8,4],[-26,29],[23,-2],[24,-23],[11,-1],[-1,-11],[13,-38],[6,-4],[21,15],[-15,14],[-9,45],[0,25],[29,-10],[8,7],[26,-17],[18,-30],[4,-24],[19,-29],[-7,-28],[16,-17],[25,-16],[8,1],[35,-23],[16,4],[4,-24],[-13,-6],[-4,13],[-5,-14],[-19,11],[-14,-26],[22,5],[-2,-17],[9,-10],[-19,-8],[-24,-5],[-49,6],[4,12],[-40,5],[-4,18],[-10,-16],[-17,-13],[-28,-6],[-12,-9],[-56,-11],[-59,-3],[-16,19],[2,22],[-18,5],[-26,-3],[-22,4],[-18,9],[0,6],[-18,12],[-4,14],[39,12],[41,5],[53,-7],[9,7],[22,-3],[-18,14],[-19,2],[-18,8],[-58,-6],[-19,4],[-40,-1],[-19,23],[17,8],[41,11],[13,11],[-48,-10],[-21,6],[13,5],[-36,7],[0,11],[16,17],[13,3],[-13,15],[34,25],[50,16],[27,11],[10,-5]],[[2094,9405],[-16,-22],[-8,1],[-18,19],[-26,12],[13,13],[42,1],[16,-10],[-3,-14]],[[2768,9430],[25,-7],[37,2],[19,-6],[32,-26],[-1,-17],[-52,5],[-28,-9],[-22,6],[-4,22],[-21,5],[1,25],[14,0]],[[2595,9436],[41,-3],[4,-8],[-30,-21],[-18,-26],[10,-20],[-3,-28],[9,-14],[19,-16],[14,-5],[-16,-13],[-13,0],[-8,-10],[21,10],[18,-2],[8,17],[-4,14],[-16,-1],[-8,13],[2,21],[16,1],[-18,12],[-3,25],[14,2],[-6,11],[26,-5],[-19,15],[63,24],[37,-1],[11,-27],[14,-5],[0,-14],[10,-10],[-26,-24],[18,11],[-11,-18],[5,-13],[12,5],[16,25],[23,-13],[11,14],[26,14],[67,-15],[7,-14],[-14,-14],[33,4],[0,-15],[-32,-17],[31,12],[19,-1],[-10,-9],[-4,-17],[12,19],[3,-12],[15,-7],[13,23],[32,-12],[8,-11],[-10,-12],[-11,3],[-13,-14],[4,-6],[25,7],[4,9],[15,2],[3,-9],[-13,-17],[30,15],[-3,-16],[15,10],[31,-11],[-10,-16],[-31,-9],[32,3],[-1,-16],[12,9],[6,14],[24,-23],[2,-12],[-26,3],[-15,-11],[19,-8],[19,1],[16,-11],[-2,-8],[-26,2],[-15,8],[-22,3],[22,-8],[13,-10],[-8,-4],[5,-11],[-43,2],[33,-6],[-9,-8],[29,-2],[23,-6],[-10,-6],[8,-11],[37,-12],[12,7],[-2,-12],[18,-4],[13,-28],[-21,-10],[47,10],[-7,-18],[22,-5],[5,9],[18,-10],[10,-16],[-20,-10],[14,-3],[-30,-8],[14,-7],[-7,-17],[-15,-3],[7,-7],[-17,-1],[-7,16],[3,-21],[-9,-4],[9,-9],[-5,-24],[-17,9],[-9,14],[-1,-9],[-18,16],[-1,14],[-9,5],[19,17],[-31,-5],[-2,9],[-22,20],[2,8],[-13,-6],[-6,-11],[-16,12],[7,-15],[16,-12],[-1,-7],[-20,-1],[-9,18],[-2,-18],[12,-16],[14,3],[-2,-10],[10,-2],[10,-39],[1,14],[31,-16],[-3,-16],[17,0],[-10,-10],[11,-14],[11,-5],[-9,-11],[12,-6],[0,-25],[-7,5],[-4,18],[-2,-14],[10,-29],[-17,5],[8,-19],[-7,-5],[-1,13],[-12,11],[-12,-3],[-13,13],[-5,-5],[-20,21],[-6,12],[-1,-16],[-27,24],[-8,-3],[23,-33],[17,-6],[17,-21],[5,0],[16,-26],[7,-2],[-9,-20],[-30,16],[-35,7],[-12,7],[-25,24],[-9,-2],[-38,22],[-5,14],[15,10],[-16,12],[-2,-7],[-15,9],[-13,14],[-15,33],[-20,-9],[4,15],[-14,-6],[-5,-14],[-30,14],[-5,-12],[-24,-12],[-14,2],[-18,11],[-4,27],[5,9],[18,8],[-3,15],[21,-2],[25,-11],[9,-9],[-6,-7],[10,-12],[-2,16],[-16,17],[23,-3],[1,7],[15,-3],[11,12],[19,-5],[-7,19],[-8,4],[-13,18],[41,32],[5,19],[15,6],[-4,22],[-12,18],[-4,23],[-23,5],[3,18],[-19,-6],[-13,16],[2,15],[-9,-11],[-10,2],[-32,-14],[0,20],[28,3],[1,9],[-30,19],[-15,5],[10,9],[-23,0],[0,21],[-20,2],[-10,12],[-21,2],[21,-15],[3,-13],[-29,-7],[-6,8],[-39,3],[15,-14],[-9,-2],[-14,13],[-15,-11],[-25,12],[-15,-3],[-31,3],[-5,4],[-39,2],[-21,21],[1,-11],[-47,11],[-21,25],[9,7],[22,-4],[27,0],[-15,18],[-6,-3],[-47,6],[-5,7],[5,17],[-9,11],[5,24],[25,52],[36,27],[33,8]],[[2227,9438],[17,-9],[57,6],[4,-12],[-12,-6],[8,-7],[-19,-7],[-19,-16],[35,-3],[9,-16],[12,3],[5,-18],[-9,-6],[3,-27],[-25,-13],[-26,2],[9,-8],[-13,-13],[-19,3],[-13,25],[-27,24],[-21,3],[-34,24],[-4,9],[14,16],[11,-4],[16,-18],[24,2],[10,8],[-4,14],[-11,1],[-28,20],[11,7],[16,-9],[3,8],[-13,12],[33,5]],[[2287,9448],[-13,-11],[-23,-4],[-12,7],[34,10],[14,-2]],[[2423,9449],[18,-8],[8,5],[45,-7],[-28,-33],[-12,-21],[-14,-14],[-33,4],[-13,-4],[10,-16],[-18,-22],[-29,-6],[-2,33],[-11,9],[-2,60],[11,2],[1,14],[44,9],[25,-5]],[[1623,9476],[28,-12],[41,-10],[46,4],[58,-41],[-3,-6],[-28,-9],[-76,-37],[-3,-15],[-14,-8],[-13,1],[-3,-32],[-7,-11],[-22,-7],[-9,5],[-11,-12],[-27,-10],[-26,36],[-34,14],[-14,0],[0,10],[14,22],[9,4],[-4,18],[17,2],[-12,9],[14,21],[16,15],[-10,9],[-14,28],[87,12]],[[2118,9518],[-3,-12],[-30,4],[15,17],[18,-9]],[[2378,9537],[25,-20],[2,-24],[-5,-11],[-41,1],[-43,18],[23,30],[25,8],[14,-2]],[[2325,9539],[-16,-17],[-5,9],[21,8]],[[2164,9558],[-14,-12],[-20,-1],[7,9],[27,4]],[[2380,9546],[-17,10],[11,3],[6,-13]],[[2157,9563],[-38,-10],[11,8],[27,2]],[[1732,9567],[5,-3],[-22,-28],[-10,-5],[-22,5],[20,18],[29,13]],[[2805,9567],[0,-15],[-16,-3],[16,18]],[[2149,9575],[-6,-11],[-43,0],[2,8],[47,3]],[[2113,9595],[25,-12],[-38,-5],[-7,16],[20,1]],[[2266,9598],[21,-11],[7,-58],[-18,1],[14,-20],[-11,-7],[-47,-3],[-20,3],[-11,19],[33,20],[-52,-5],[-33,-7],[2,14],[20,10],[-6,28],[18,3],[35,-31],[7,21],[-30,12],[15,9],[23,0],[13,-10],[20,12]],[[2213,9601],[-38,-8],[20,9],[18,-1]],[[2508,9589],[-10,-2],[-15,15],[17,6],[8,-19]],[[1981,9607],[-3,-11],[20,-20],[-11,-11],[22,-7],[-10,-10],[27,5],[12,10],[31,-10],[1,-18],[-15,-30],[-28,-8],[-21,7],[-19,-7],[-5,8],[-25,-11],[-22,-4],[-24,-12],[-34,-10],[-29,0],[-27,17],[52,17],[27,0],[19,13],[-36,-6],[-3,5],[-44,-9],[-5,24],[-10,-23],[-35,-6],[-55,16],[12,13],[30,0],[31,14],[-30,-8],[-32,0],[10,12],[57,5],[-39,0],[-12,12],[23,10],[10,12],[36,1],[7,-17],[28,5],[33,-21],[14,-22],[62,-1],[6,7],[-32,17],[18,11],[-30,11],[18,11],[15,19],[15,0]],[[1840,9610],[3,-10],[-34,3],[31,7]],[[2354,9618],[44,-6],[16,-16],[46,3],[26,-13],[-26,0],[59,-9],[-2,-7],[-52,-1],[30,-6],[28,-18],[2,-16],[14,11],[11,-8],[26,6],[13,-9],[59,10],[21,10],[23,-5],[16,6],[39,-3],[40,-18],[6,-11],[-25,-15],[16,1],[10,-9],[-23,-7],[-1,-11],[-29,0],[-12,-6],[-33,5],[-7,16],[-11,-16],[-84,-5],[-53,2],[2,20],[-21,-15],[-21,-3],[-30,10],[-10,-4],[-19,9],[1,10],[-13,14],[11,38],[-14,8],[-14,21],[-17,-6],[-37,-3],[6,7],[-27,3],[-11,14],[-18,4],[15,6],[-15,7],[13,6],[32,-1]],[[1774,9644],[20,-9],[-25,-7],[-2,-15],[13,-14],[-30,-8],[-9,-17],[-20,9],[5,24],[-19,-6],[-1,-22],[-34,-26],[-19,-3],[-7,19],[-15,-12],[-46,8],[9,15],[31,5],[9,14],[22,7],[15,17],[27,15],[26,1],[18,-6],[32,11]],[[2491,9653],[17,-10],[-11,-14],[-30,11],[0,13],[24,0]],[[2083,9641],[18,-11],[-11,-7],[-23,12],[-14,25],[13,0],[17,-19]],[[2350,9662],[51,0],[13,-7],[-11,-10],[-70,0],[-6,13],[23,4]],[[2196,9660],[-42,-1],[0,9],[21,1],[21,-9]],[[1824,9675],[20,-11],[-15,-6],[-27,14],[22,3]],[[1955,9679],[-35,-12],[21,-5],[-3,-16],[-52,-10],[-31,11],[3,23],[51,10],[46,-1]],[[1933,9718],[31,-15],[-4,-11],[-50,5],[-52,-7],[-5,8],[40,8],[40,12]],[[2308,9715],[18,-10],[40,-9],[-15,-7],[9,-16],[-51,-11],[-22,18],[22,2],[-33,10],[-10,12],[7,18],[35,-7]],[[2120,9752],[22,-6],[10,-21],[25,12],[58,-29],[-8,-16],[22,-13],[0,-11],[-25,-6],[-19,5],[-12,19],[-45,10],[-50,-6],[-10,18],[38,-3],[1,15],[-18,11],[-27,-9],[10,11],[-26,2],[4,16],[50,1]],[[2237,9796],[21,-8],[-5,-17],[-36,22],[20,3]],[[2423,9866],[56,-44],[40,-1],[1,-15],[22,9],[22,-2],[19,-26],[-9,-26],[20,9],[23,-2],[24,-19],[-46,-14],[-69,-50],[-26,25],[15,-26],[-24,10],[0,-11],[-49,4],[-22,17],[34,3],[-45,2],[-28,21],[25,12],[79,3],[-58,1],[0,12],[-36,-11],[-3,7],[-33,-6],[-14,15],[27,4],[-31,3],[-21,14],[-4,14],[53,-6],[21,9],[-36,-4],[-32,9],[14,17],[41,2],[7,8],[-33,3],[17,15],[39,0],[7,9],[-28,8],[41,-2]],[[3064,9969],[92,-13],[-63,-13],[33,0],[64,14],[63,-22],[36,-2],[8,-17],[-85,-27],[-75,-6],[11,-7],[-78,-18],[137,21],[-4,-9],[-119,-45],[-9,-11],[-28,-4],[-23,-32],[-31,-8],[-32,7],[7,-13],[-52,-10],[-85,-2],[20,-4],[80,-3],[-1,-11],[-35,3],[-9,7],[-57,-2],[56,-5],[-45,-3],[55,-3],[-14,-6],[38,-1],[8,-15],[-22,-5],[-30,2],[38,-10],[-14,-14],[-35,-13],[-43,0],[19,-17],[-14,-13],[-47,-6],[-38,9],[-17,14],[5,-14],[18,-8],[57,-7],[-10,-14],[19,-6],[18,11],[7,-22],[-21,-10],[-5,7],[-22,-15],[-42,-11],[8,17],[-36,5],[-6,-7],[-40,2],[-13,10],[-6,-17],[-23,-1],[-61,10],[-4,-7],[-37,4],[-15,10],[-1,17],[33,15],[23,-1],[15,8],[-21,5],[-15,25],[29,7],[27,-6],[22,-23],[54,-3],[27,35],[-39,-27],[-38,10],[15,39],[-21,-13],[-21,5],[-35,-4],[1,19],[24,20],[44,7],[35,-5],[56,1],[-53,4],[-30,6],[11,9],[-23,27],[-37,6],[0,32],[75,-4],[67,-35],[-7,16],[-44,23],[80,9],[54,8],[-44,0],[94,17],[-62,-3],[-2,9],[57,26],[-37,-9],[-40,-28],[-44,-11],[-53,-5],[27,11],[-48,2],[1,-13],[-55,-1],[-26,5],[26,19],[85,11],[-93,-8],[-33,-21],[-58,14],[99,12],[30,12],[-43,-8],[-98,-8],[-15,8],[12,11],[45,14],[-57,-12],[12,13],[-22,4],[-21,-8],[-14,7],[27,11],[83,15],[87,-6],[-56,12],[43,5],[-12,10],[30,1],[59,-23],[-11,12],[82,-19],[-75,24],[18,17],[41,-8],[-28,15],[47,-2],[16,12],[41,-3],[44,-11],[-31,15],[35,4],[54,-3],[10,-8],[24,12],[91,2]],[[5255,7927],[0,0]],[[5255,7927],[0,0]],[[5255,7927],[10,-8]],[[5264,7905],[2,-12]],[[5290,7882],[-2,-13],[-10,-7],[4,-15],[-6,6],[-12,-4],[-2,10],[-5,0],[-1,-14],[-5,-6],[-1,-18],[-7,10],[2,5],[-11,9],[0,13],[-10,-11],[1,-8],[-9,-12],[-8,4],[-13,-4]],[[5195,7827],[-7,15],[0,14]],[[5188,7856],[-5,6],[-8,-4],[-3,-9]],[[5172,7849],[-4,7],[2,10],[8,9],[0,11],[7,4],[12,28],[8,-5],[5,10]],[[5210,7923],[14,-1],[9,5],[4,9],[9,-9],[9,0]],[[3101,2016],[-9,-10],[13,-7],[6,-18],[-2,-7],[-8,14],[-15,-2],[2,19],[-18,-5],[-1,-4],[-14,10],[3,5],[39,9],[4,-4]],[[3116,2021],[14,-1],[7,-9],[-5,-12],[-7,7],[-9,-6],[-8,1],[-2,15],[10,5]],[[3041,2018],[7,-9],[-19,2],[-1,8],[13,-1]],[[3069,2021],[8,-5],[-19,-3],[-1,8],[12,0]],[[3013,2074],[7,-1],[8,-15],[-5,-7],[-8,10],[-4,-3],[-2,16],[4,0]],[[3003,2080],[6,-2],[-5,-24],[-11,16],[0,7],[10,3]],[[3044,2081],[2,-8],[-9,4],[3,-17],[-9,10],[-1,10],[8,1],[-2,10],[6,7],[2,-17]],[[2972,2103],[2,3],[22,-21],[-6,-2],[-14,-18],[4,15],[-9,1],[-7,-7],[1,12],[-8,1],[3,17],[12,-1]],[[2925,2147],[15,-16],[8,0],[21,-22],[-10,3],[-11,14],[-13,-1],[-10,22]],[[3093,2028],[0,-1]],[[3093,2021],[-12,-3],[-17,9],[-13,-4],[-23,10],[-10,10],[-17,-8],[-1,12],[8,-7],[10,12],[7,-9],[6,12],[-2,12],[20,-15],[7,5],[13,-4],[10,-11],[3,8],[-28,18],[-4,19],[24,15],[-1,8],[-25,-6],[-6,8],[1,17],[9,1],[0,8],[12,7],[2,13],[6,4],[5,-11],[16,0]],[[2952,2165],[-2,-17],[-9,0],[-2,7],[13,10]],[[2921,2176],[8,-2],[-6,-7],[-2,9]],[[2938,2182],[8,-11],[-5,-6],[-3,17]],[[2920,2209],[3,-4],[-3,-19],[-5,7],[5,16]],[[2943,2211],[3,-10],[-9,5],[6,5]],[[2925,2234],[1,-8],[-9,1],[8,7]],[[2931,2257],[2,-13],[-14,-1],[-1,9],[9,-2],[4,7]],[[2924,2263],[1,-11],[-8,7],[7,4]],[[2906,2275],[8,0],[-10,-15],[2,15]],[[2931,2276],[3,1],[5,-22],[-5,0],[-6,13],[3,8]],[[2908,2302],[14,-5],[0,-6],[-18,-9],[1,12],[7,-5],[-4,13]],[[2903,2329],[8,-14],[-12,3],[4,11]],[[2914,2359],[5,-2],[0,-12],[-9,10],[4,4]],[[2906,2359],[2,-6],[-9,-5],[7,11]],[[2925,2377],[5,0],[2,-27],[-3,-27],[3,-13],[-9,-10],[-4,6],[1,25],[-4,-21],[-7,11],[-2,25],[13,-3],[2,12],[-7,18],[10,4]],[[2906,2392],[1,-9],[-7,-5],[-2,13],[8,1]],[[2924,2406],[4,-8],[2,-18],[-14,4],[-1,6],[9,16]],[[2913,2413],[9,-4],[-1,-11],[-7,-2],[-5,19],[4,-2]],[[2907,2415],[7,-32],[-6,0],[0,16],[-5,-5],[-3,20],[7,1]],[[2921,2430],[3,-17],[-11,6],[-1,6],[9,5]],[[2945,2427],[4,-6],[-19,2],[7,7],[8,-3]],[[2914,2436],[-3,-8],[-5,6],[8,2]],[[2924,2545],[-1,-11],[-10,7],[11,4]],[[2936,2556],[-5,-9],[0,15],[5,-6]],[[2955,2556],[-6,-2],[3,11],[3,-9]],[[2948,2591],[3,-16],[-7,2],[-6,12],[10,2]],[[2946,2594],[-9,-4],[3,9],[6,-5]],[[2946,2613],[2,-4],[-11,-6],[-4,10],[13,0]],[[2974,2623],[6,-4],[-12,-23],[-4,-1],[-5,16],[7,2],[-1,11],[9,-1]],[[2948,2662],[3,-7],[-11,0],[8,7]],[[2945,2775],[11,1],[5,-30],[-8,-2],[-4,-15],[9,-10],[-6,-5],[6,-13],[-7,-2],[2,-14],[-17,3],[-3,4],[7,21],[-1,36],[4,8],[2,18]],[[3098,2168],[-21,9],[-7,-4],[-3,-12],[-8,-1],[-27,-20],[-3,-19],[-1,-36],[-7,-5],[-24,11],[-10,15],[5,11],[15,1],[10,5],[6,18],[-5,1],[-22,-19],[-5,6],[-7,-20],[1,-10],[-20,22],[9,0],[-1,20],[14,1],[13,9],[14,0],[-2,5],[-21,3],[-19,-19],[1,-11],[-6,-4],[-8,6],[6,5],[-9,6],[9,1],[2,11],[-11,-5],[0,29],[6,-2],[15,16],[9,-1],[0,13],[-7,-6],[-15,13],[10,-15],[-6,-4],[-4,-13],[-8,7],[0,17],[-9,7],[-1,13],[6,2],[1,13],[-6,-6],[-7,4],[-1,17],[11,-2],[-1,9],[-6,-4],[-5,21],[-13,14],[9,8],[1,26],[3,6],[-5,9],[0,44],[10,11],[-11,13],[-3,13],[21,-4],[6,-13],[5,5],[-10,27],[-1,-6],[-21,1],[-2,12],[9,-2],[-7,11],[6,12],[5,0],[6,11],[-6,2],[-3,12],[-11,0],[-1,-5],[-11,14],[4,11],[-13,-16],[2,-11],[-6,-3],[-4,19],[13,13],[3,10],[12,11],[0,11],[14,3],[6,-14],[-1,-8],[7,-4],[-7,-18],[4,-3],[5,16],[4,49],[8,10],[-3,20],[4,-1],[14,13],[1,15],[-14,13],[4,39],[-1,17],[9,12],[-3,14],[0,18],[5,2],[-3,15],[5,3],[4,-15],[0,27],[-8,-3],[-4,6],[8,12],[-10,13],[-3,-13],[-12,-6],[-7,4],[2,7],[-5,11],[-2,27],[5,20],[1,37],[9,7],[4,19],[1,19],[-9,38],[2,30],[-6,26],[1,22],[9,-3],[5,16],[0,18],[4,-4],[5,42],[6,9],[-1,15],[6,18],[5,6],[1,15],[4,12],[1,31],[6,21],[4,4],[1,12],[-4,23],[6,5],[4,37],[-4,9],[1,25],[-5,52],[0,24],[2,12],[7,5],[2,44],[-5,10],[-1,19],[6,11],[4,20],[0,18],[3,22],[4,2],[-1,30],[4,5],[2,15],[2,41],[-2,11],[2,19],[6,8],[-1,24],[-2,5],[1,62],[3,17],[-6,0],[1,25],[6,1],[4,33],[0,23],[2,25],[2,3],[0,24],[-3,10],[0,37],[2,6],[-1,31],[-5,51],[0,21],[-2,8]],[[3044,4127],[12,4],[4,9],[0,26],[9,9]],[[8073,6343],[8,-9],[1,-20],[-9,-13],[-7,-43],[-4,0],[-5,-15],[-9,-1],[-2,-11],[-14,6],[-14,12],[-1,42],[10,19],[8,9],[-1,10],[7,-3],[5,9],[8,-6],[10,10],[8,-9],[1,13]],[[8066,6398],[4,-5],[-8,-2],[4,7]],[[8393,6916],[2,-7],[-8,4],[6,3]],[[8386,6994],[-10,4],[-11,15],[6,2],[9,-11],[8,-5],[-2,-5]],[[8689,7778],[-2,10],[-10,6],[-11,-7]],[[8666,7787],[-4,7],[-12,-22],[-11,-4],[0,-9],[6,-40],[-2,-28],[3,-6],[-5,-31],[-19,-10],[3,-13]],[[8625,7631],[-8,13],[0,9],[-9,7],[-4,-13],[-1,-19],[-14,-5],[-1,-10],[-7,-10],[-26,-3],[8,-20],[-3,-13],[-30,7],[-2,12],[-9,1],[-12,-34],[-9,-16],[-6,0],[-8,-10],[-16,-14],[-14,-21]],[[8454,7492],[-5,-13],[-6,-5],[-9,3],[-11,-3],[-28,-28],[-3,-9],[-8,-11],[-3,5],[-7,-13],[-10,-4],[0,12],[15,8],[-10,29],[6,0],[-2,11],[12,12],[11,27],[-3,13],[-22,14],[-12,-7],[0,-7],[-10,-13],[-4,-16],[-14,-7],[-17,-19],[-1,-19],[-10,-15],[-10,0],[-7,-8],[-11,11],[-6,-6],[-5,-28],[5,-14],[10,-13],[14,-4],[7,5],[12,-25],[-7,-1],[-2,-21],[10,-12],[13,1],[2,11],[10,10],[3,9],[12,10],[11,-8],[0,-6],[9,-7],[34,-4],[-7,-15],[3,-13],[-9,-5],[-5,9],[-28,-23],[-6,3],[4,-11],[-7,-1],[0,-17],[-11,-5],[2,8],[-8,2],[2,-13],[-7,-22],[-8,-4],[-7,-26],[-5,-3],[1,-16],[12,-14],[17,-12],[6,-38],[11,-36],[-1,-21],[15,-16],[0,-13],[11,-10],[4,-16],[-8,1],[-9,9],[-10,-3],[-4,11],[-11,2],[-5,-7],[-7,4],[-3,16],[-6,2],[3,-11],[11,-13],[16,4],[2,-9],[7,-5],[8,-15],[9,-9],[6,-12],[2,-13],[-9,-2],[-12,-10],[-8,-11],[-5,-15],[6,-2],[6,9],[6,-1],[8,-19],[13,-6],[-13,-19],[7,5],[0,-22],[-4,-6],[-5,3],[1,-27],[-5,-3],[5,-23],[-5,2],[-4,-10],[-3,12],[-9,-28],[-8,-17],[-3,-23],[-6,-4],[-1,-11],[-9,-7],[-1,-8],[-5,9],[-4,-6],[5,-6],[2,-11],[-5,4],[2,-10],[-5,-15],[5,-3],[-3,-18],[-4,0],[6,-17],[-11,10],[-4,-8],[5,-14],[-9,1],[-3,-9],[3,-10],[-10,0],[4,-9],[-3,-8],[-6,3],[-5,-5],[-2,8],[-5,-13],[3,-11],[-5,-4],[-1,-10],[-6,-1],[-7,-13],[-4,1],[-5,-14],[-6,5],[0,-9],[-10,-21],[-1,-10],[-6,1],[-13,-12],[-7,6],[0,-11],[-14,8],[-5,-13],[-6,11],[-5,-7],[4,-8],[-4,-3],[-2,9],[-5,-3]],[[8172,6482],[-4,-2]],[[8168,6480],[-7,-3],[-2,17],[-3,-1],[-2,15],[-6,-8],[6,-17],[0,-15],[-2,-9],[-10,20],[7,-19],[-10,-14],[-5,1],[-13,-12],[-10,3],[-11,-15],[-25,-8],[-3,-10],[-6,-1],[-7,-13],[5,-7],[-1,-13],[7,-9],[-4,-10],[-13,-2],[-1,10],[-7,25],[3,28],[5,0],[0,8],[-8,1],[-2,14],[-1,-16],[-12,1],[0,6],[-9,2],[-9,13],[2,-16],[-6,7],[0,-8],[-9,-5]],[[7999,6420],[-7,10],[-9,-4],[-12,14],[1,6],[-10,2],[0,14],[-4,7],[0,14],[5,0],[0,16],[-14,0],[-18,12],[-7,14],[-14,-13],[1,-9],[-14,-14],[-3,8],[-6,-8],[0,-9],[-11,16],[-4,-12],[-5,11],[-7,-21],[-5,10],[-13,9],[-4,-20],[-3,0]],[[7836,6473],[-13,3],[-4,-12],[1,-10],[5,-15],[0,-39],[-5,6],[-9,-2],[-2,20]],[[7809,6424],[-2,12],[-7,-6],[-3,-8],[-8,-4],[-2,5],[-5,-6],[-2,13],[-4,3],[-1,19],[-14,5],[-6,-1],[0,16],[4,5],[-1,14],[6,11],[-5,13],[-8,-2],[-7,5],[2,6],[-6,40],[6,9],[-9,-3],[-13,1],[-14,-14],[-2,5],[5,10],[-1,18],[-4,0],[0,17],[7,8],[-2,12],[4,11],[2,-3],[6,10],[0,13],[6,-3],[3,13],[7,6],[-4,6],[5,33],[0,29],[-2,31],[-7,4],[-1,-9],[-7,20],[0,16],[-8,13],[-9,9],[-5,-18]],[[7703,6808],[-7,9],[-4,-3],[-7,15],[-7,1],[5,6],[-4,17],[-9,21],[-12,-9],[-6,0],[-6,-9],[-9,4],[-9,11],[-8,-6],[-3,-16],[-9,-6],[-6,-8],[-7,-1],[-9,-16],[-12,-14],[0,-11],[-9,-9],[-12,-5],[-8,2]],[[7468,6756],[-4,12],[3,18],[-1,10],[-6,5],[-13,-14]],[[7447,6787],[-8,2],[-4,-5],[-15,1],[-3,7],[-14,9],[-4,-11],[-9,10],[-3,-11],[-2,13],[-6,7],[-16,3],[2,17],[-4,3],[-7,-6],[-9,11],[-7,12],[-2,16],[-5,5],[-13,-7],[-9,26],[-9,2],[-9,15],[-10,8],[-1,15],[-14,5],[-11,-23],[-7,11]],[[7248,6922],[-11,15],[-10,6],[1,9],[-14,15],[-4,-3],[-9,13],[-5,16],[-9,-8],[-2,12],[4,5],[-4,7],[2,15],[-9,14],[-2,20],[9,4],[6,-16],[10,8],[7,13],[-5,14],[0,12],[-7,3],[-8,16],[-3,33],[8,8],[0,7],[-10,12],[-9,5],[-8,41],[1,9],[-7,0]],[[7160,7227],[-18,1],[-11,8]],[[7131,7236],[-5,6],[0,8],[-13,-4],[-4,10],[1,27],[-7,15],[-9,1],[0,7],[-8,7],[-7,-2],[-9,4]],[[7080,7327],[7,10],[-8,13],[3,7],[-5,17],[-1,26],[-12,9],[-6,0],[-2,-9],[-6,3],[-4,16],[4,9],[-6,12],[1,14]],[[7045,7454],[8,8],[-3,9],[4,18],[11,3],[10,14],[3,10],[11,-4],[8,11],[4,-20],[18,4],[9,13],[0,10],[5,15],[18,-2],[11,5],[5,-2],[8,19],[26,23],[27,15],[-1,8]],[[7227,7611],[1,3],[-3,23],[3,11],[9,6],[-7,5],[13,6],[-4,13],[2,7],[-11,37],[0,32],[5,5],[-18,8],[7,9],[21,5],[23,13],[3,-9],[13,3],[7,-7],[4,17],[-11,7],[7,21],[9,47],[5,14],[0,14],[24,-13],[21,1],[4,-10],[13,13],[7,0],[5,9],[-4,41],[4,25],[25,10],[4,10],[0,17],[4,6],[12,-1]],[[7424,8009],[15,5]],[[7439,8014],[-4,-17],[9,-8],[-2,-9],[16,-10],[2,-12],[14,-12],[11,1],[7,-11],[9,3],[11,-21],[0,-11],[15,-34],[1,-11],[-5,-14],[3,-17],[-7,-13],[-2,-16],[6,-17],[6,2],[16,-9],[23,-4],[11,2],[23,-8],[6,-13],[7,0],[14,-19],[9,-5],[11,2],[-2,-16],[6,-3],[9,-41],[12,-19],[2,-11],[23,4],[63,-13],[14,6],[49,-12],[7,-15],[29,-11],[18,-15],[23,7],[0,-12],[13,-5],[6,10],[44,30],[36,10],[20,-3],[20,4],[25,19],[15,29],[18,12],[10,13],[-9,18],[-7,23],[11,33],[5,4],[13,-1],[5,-10],[14,-6],[13,-3],[16,16],[14,24],[6,-3],[23,5],[15,18],[-1,7],[11,24],[6,3],[15,-1],[1,13],[9,-4],[16,12],[12,-3],[3,5],[14,-8],[11,-1],[5,6],[-4,23],[-18,25],[0,6],[-10,7],[-6,11],[-10,5],[-12,-3]],[[8270,7946],[-7,-13]],[[8263,7933],[-5,-6],[-13,13],[-17,-1],[-11,-9],[-7,10],[-2,13],[8,8],[-1,12],[25,79]],[[8240,8052],[16,-12],[14,-6],[12,9],[13,17],[12,1],[7,6],[1,14],[-4,6],[8,27],[7,10],[1,11],[8,23],[16,14],[3,17],[-4,7],[3,13],[-8,5],[-12,-1],[22,37],[12,1],[26,11],[19,0],[11,6],[28,-11],[4,-9],[20,-1],[17,-13],[23,-49],[-3,-10],[6,-23],[6,-9],[1,-20],[10,-19],[1,-23],[7,-6],[-2,-23],[5,-9],[11,-7],[20,2],[7,-14],[13,-3],[9,-7],[11,-17],[12,0],[-4,-13],[6,-8],[2,-13],[-4,-13],[7,-20],[15,2],[13,-5],[17,3],[3,9],[12,14],[12,-1],[6,9],[18,8],[9,-7],[-4,-13],[6,-17],[-8,-19],[-9,-6],[-4,-38],[-5,-13],[2,-9],[-11,-22],[-1,-15],[-8,-8],[-2,-21],[-8,-3]],[[4913,5477],[0,-1]],[[4913,5476],[0,1]],[[4925,5729],[-2,-26],[3,-1],[4,-47],[-8,-15],[-6,-39],[-7,-28],[2,-31],[2,-4],[4,-31],[5,-1],[2,-13],[-3,-14]],[[4921,5479],[-10,3],[-3,-4],[-15,4],[-5,4],[-18,3],[-3,-9],[16,7],[6,-3],[-22,-5],[-22,-3],[-38,-25],[-5,-8],[-12,-10]],[[4790,5433],[-1,2],[0,41],[5,10],[-1,33],[-10,7],[-1,13],[-6,7],[-10,3],[-6,8],[8,15],[1,23],[-5,23]],[[4764,5618],[7,-1],[3,10],[3,27],[-7,4],[2,14],[7,0],[5,-7],[2,15],[-8,9],[1,12],[5,5],[-5,6],[2,13],[-5,-2],[-3,7],[1,32],[4,6]],[[4778,5768],[4,2],[5,14],[5,1],[3,-12],[9,-6],[2,12],[7,-1],[1,18],[8,-5],[-1,8],[5,2],[2,-15],[-2,-13],[6,-3],[3,9],[11,4]],[[5402,5930],[2,-13],[7,-8],[3,-17],[-1,-10],[5,-3],[2,-34],[-2,-3],[-1,-26],[3,-28],[9,-22],[6,-8],[-7,-3],[-9,3],[-10,-4],[-15,3],[-7,-19],[11,-27],[17,-29],[3,-1],[8,-30],[2,-17],[4,-2],[-3,-16]],[[5449,5312],[-3,-5],[2,-25],[-18,15],[-7,3],[-10,-2],[-8,12],[-9,-3],[-27,0]],[[5369,5307],[-6,5],[-48,3],[-1,-7]],[[5314,5308],[-38,0],[-4,10]],[[5272,5318],[0,12],[4,27],[-1,12],[-8,18],[-2,13],[6,11],[-2,8],[-10,-11],[-10,10],[-2,29],[-11,-4],[2,17]],[[5238,5460],[6,19],[1,41],[4,2],[10,24],[10,13],[2,14],[10,13],[3,-8],[7,1],[1,9],[8,-5],[7,-14],[1,-16],[7,1],[6,15],[-1,8],[10,15],[-2,17],[5,9],[0,9],[5,14],[1,25],[16,23],[2,34],[9,9],[2,17],[-1,14],[6,5],[3,30],[12,34],[6,-1],[11,14],[1,37],[-3,10],[-10,4],[-3,40]],[[5390,5936],[7,0]],[[5397,5936],[-1,-11],[6,5]],[[5398,5936],[1,0]],[[5399,5936],[-1,0]],[[5944,7202],[0,0]],[[5944,7202],[-3,0]],[[5941,7202],[0,0]],[[5941,7202],[3,0]],[[5905,7208],[0,1]],[[5905,7209],[1,0]],[[5906,7209],[1,0]],[[5907,7209],[-2,-1]],[[5935,7200],[1,-2]],[[5936,7198],[-7,-1],[-1,11],[-17,-6],[-3,7]],[[5908,7209],[0,0]],[[5908,7209],[3,-5],[17,6],[1,-10],[6,0]],[[5807,5072],[0,-19],[-2,6],[2,13]],[[5762,5475],[2,-10],[7,-8],[0,-10],[16,-18],[12,12],[6,1],[5,-9],[7,12],[0,6],[10,-5],[0,-12],[4,-3],[7,-21],[10,-6],[0,-14],[6,4],[2,-10]],[[5856,5384],[2,-7],[-5,-19],[3,-15],[-4,-19],[8,-3],[8,-13]],[[5868,5308],[-10,-15],[-12,-24],[0,-15]],[[5846,5254],[-7,-6],[-2,-13],[-6,-5],[0,-21],[-3,-7],[-4,-25]],[[5824,5177],[-7,-9],[-3,-12],[1,-13],[8,12]],[[5823,5155],[-1,-6],[-1,-46]],[[5821,5103],[-7,-8],[-3,-9]],[[5811,5086],[-3,1],[-7,-28],[3,-9],[-3,-10]],[[5801,5040],[4,-14]],[[5811,4991],[-2,-3],[-1,-49],[4,11],[-1,-27],[-3,-5],[0,-30],[7,-28],[-1,-13],[-4,-5],[10,-49],[6,-14],[6,-6],[6,-13],[2,-29],[7,-10],[2,-12]],[[5849,4709],[-28,-8],[-19,-7]],[[5802,4694],[-16,-35],[0,-23],[4,-2],[2,9]],[[5792,4643],[4,-21],[-1,-21],[1,-34],[-5,-16],[0,-10],[-4,-17],[4,-25],[9,-11],[6,-17],[14,-4],[-2,11],[9,5],[0,-75],[-5,1],[-1,12],[-10,-10],[-7,1],[-2,14],[-6,17],[-4,-2],[-1,13],[-5,13],[-16,7],[-6,6],[-3,16],[-5,7],[-1,12],[-5,0],[-1,-16],[-7,-8],[-10,6],[-11,0],[-4,7],[-14,8],[0,26],[-17,-7],[-8,-8],[-4,5],[3,14],[-8,6],[-4,9]],[[5366,4846],[-9,2],[-4,-10],[-7,-3],[-7,16]],[[5363,4916],[8,-9],[0,-6],[8,11],[1,14],[7,-2],[12,12],[2,-8],[-3,-7],[1,-20],[9,0],[4,6],[10,27],[8,8],[1,8],[9,4],[10,35],[-1,29],[1,13],[-1,26],[12,25],[0,7],[11,30],[8,5],[12,27],[0,21],[3,25],[3,7],[-2,14],[1,28],[5,27],[-1,34],[16,57],[0,19]],[[5333,4894],[-5,13],[0,10],[-15,33],[-5,6]],[[5308,4956],[2,12],[8,13],[5,-10],[5,-2],[4,22],[-8,9],[3,10],[-7,12],[2,7],[-1,20],[4,-5],[6,5],[4,-5],[11,5],[-1,24],[5,5],[5,-5],[5,-26],[11,-4],[9,13],[1,6],[9,-22],[5,9],[0,20],[5,5],[1,41],[-2,10],[3,23],[-9,9],[-3,11],[-5,0],[0,27],[5,19],[5,0],[6,16],[-5,18],[0,11],[-14,6],[-7,-9],[-7,-3],[-4,22],[2,23],[3,9]],[[3018,5865],[-19,-13],[-7,-27],[-6,-1],[-7,-26],[-5,-13],[-2,-37],[-11,-37],[11,7],[1,-11],[4,2],[4,-28],[8,-16],[1,-19],[-4,-7],[1,-28],[7,-3],[3,-18],[7,-5],[5,4],[18,-4],[9,7],[10,-10],[7,-1],[18,-46],[5,-2],[7,8],[11,-5],[29,8],[4,-18],[-6,-10],[0,-17],[-5,-6],[0,-66],[5,-28],[4,-2],[5,-17],[-15,-35],[7,-6],[11,-18],[0,-12],[4,-17],[5,-39]],[[3056,4939],[-8,22],[-6,-2],[-7,6],[18,59],[0,7],[-26,25],[-10,-10],[-2,7],[-8,7],[-6,-11],[-10,-7],[-8,6],[-9,-5],[-7,8],[2,12],[-2,17],[-10,6],[1,12],[-4,13],[-7,3],[-5,10],[-5,2],[-4,26],[-6,11],[-5,2],[-8,14],[-5,-2]],[[2909,5177],[-11,11],[-3,-1],[-7,15],[-8,7],[-3,-12],[-9,-1],[-19,10],[-1,14],[-7,11],[-11,5],[-13,16],[-7,13]],[[2810,5265],[-5,10],[5,13],[7,-2],[-3,14],[0,13],[7,19],[10,-5],[0,9],[9,-4],[1,22],[12,29],[0,6],[7,20],[-6,-5],[-4,5],[-1,15],[3,16],[-2,57],[-5,2],[9,12],[0,7],[-7,20],[3,5],[1,19],[-5,6],[-3,17],[-7,14]],[[2836,5599],[2,14],[13,12],[1,13],[4,2],[-6,28],[-3,3],[3,11]],[[2850,5682],[12,-31],[1,-12],[5,0],[-1,29],[-4,10],[7,5],[10,15],[6,23],[12,4],[2,15],[-3,1],[3,13],[-1,20],[3,2],[0,16],[8,14],[11,14],[9,-5],[-3,-8],[7,-4],[4,18],[1,14],[10,-3],[15,1],[6,12],[10,13],[13,10],[3,11],[-1,9],[6,1],[12,10],[8,-6],[3,-18],[-6,-10]],[[6235,4487],[1,-17],[-4,8],[3,9]],[[6207,4496],[-7,9],[1,21],[4,1],[-1,-12],[3,-19]],[[4324,6037],[-5,9],[5,2],[0,-11]],[[4340,6065],[8,-16],[-5,-7],[-4,7],[1,16]],[[4365,6116],[5,-8],[-8,-3],[3,11]],[[4303,6173],[3,-6],[-7,-10],[-3,11],[7,5]],[[2676,5812],[7,-32],[16,-36],[7,-10]],[[2706,5734],[-3,-5],[-5,7],[-2,-8],[0,-23],[6,-10],[-5,-4],[2,-19],[-6,-11],[4,-16]],[[2697,5645],[-2,11],[-5,9],[0,15],[-9,5],[5,-10],[0,-10],[-12,12],[3,27],[-8,14],[-10,11],[-11,8],[1,10],[-12,21],[-4,-7],[9,-12],[-6,-16],[-6,15],[-10,5],[-5,19],[1,16],[3,2],[1,15],[-8,5],[7,2],[0,9]],[[2619,5821],[2,7],[21,-15],[5,7],[13,-10],[0,-5],[8,-5],[8,5],[0,7]],[[2698,6446],[5,-3],[4,-17],[-10,-9],[-8,8],[7,1],[-4,15],[6,5]],[[2836,6454],[6,-1],[-1,-7],[-5,8]],[[2823,6481],[-2,-7],[-7,5],[9,2]],[[2914,6329],[-1,4]],[[2913,6333],[-1,0]],[[2912,6333],[-2,-4]],[[2910,6329],[-10,-1],[-15,6],[-21,-3],[-2,-3],[-21,-3],[6,17],[9,10],[3,9],[-8,15],[-19,-1],[-13,20],[-1,18],[-6,16],[-14,-5],[-10,8],[-8,0],[-10,11],[-5,10],[-13,-1],[-13,8],[-13,4],[-7,11],[12,1],[1,7],[-7,6],[-25,1],[-10,-21],[-7,-9],[-15,0],[-2,-15],[-3,2],[-11,-11],[1,10],[-11,-3],[10,9],[5,0],[-2,15],[3,11],[12,15],[14,8],[3,6],[19,3],[9,8],[27,-2],[3,-6],[15,2],[6,-8],[10,1],[11,-12],[9,-20],[15,-1],[13,-13],[5,-1],[7,-16],[12,-5],[-3,9],[12,-16],[5,-11],[23,-17],[0,-5],[12,2],[3,-6],[-5,-10],[2,-9],[20,1],[7,-5],[9,-19],[5,2],[2,-9],[-3,-6],[-13,0],[-10,-9]],[[3089,5876],[-11,16],[3,2],[8,-18]],[[5905,7209],[1,0]],[[5941,7202],[-6,-2]],[[5908,7209],[6,1],[0,11],[14,-4],[17,8],[15,13],[0,-3],[-19,-22],[3,-11]],[[5938,7197],[0,0]],[[5938,7197],[0,0]],[[5937,7198],[0,0]],[[5944,7202],[-3,-6]],[[5941,7196],[0,6]],[[5936,7198],[0,-1]],[[5936,7197],[-3,-9],[-16,-11]],[[5917,7177],[-8,1]],[[5909,7178],[-7,3],[-5,11],[1,9],[7,7]],[[5907,7209],[1,0]],[[5411,8112],[4,8],[9,-9],[14,-7],[6,-6],[12,-3],[-7,-8],[13,-20],[10,7],[-4,12],[9,-2],[19,-24],[4,4],[7,-7],[8,0],[8,-23]],[[5523,8034],[-8,-1],[-12,-15],[-1,-11],[-15,-14],[-9,4],[-8,-15]],[[5383,7990],[-10,11],[-13,20],[-10,9],[-7,17],[3,13],[-5,11],[6,13],[26,11],[3,8],[9,1],[13,9],[-2,8],[15,-9]],[[5255,7927],[0,0]],[[5394,8289],[0,-4]],[[5394,8285],[0,4]],[[5371,8330],[6,-3],[4,-14],[-11,-5],[-6,4],[1,12],[6,6]],[[5262,8339],[4,3],[12,-11],[5,-15],[13,-5],[11,2],[1,-9],[-10,-8],[12,-2],[8,-7],[5,14],[11,2],[14,11],[13,4],[3,-10],[10,-8],[6,2],[3,-17],[13,-10]],[[5396,8275],[3,-23],[-5,-27],[12,-14],[-3,-9],[7,-21],[-4,-20],[2,-11],[7,-4],[2,-14],[-6,-20]],[[5269,7921],[-15,12],[1,-6]],[[5210,7923],[-2,4],[8,55],[9,11],[2,10],[-16,4],[-4,7],[-18,-1],[-13,17]],[[5176,8030],[4,20],[-6,3],[-5,16]],[[5166,8104],[-3,14],[9,22],[0,9],[-8,12],[5,10],[8,-4],[10,5],[8,28],[-10,5],[2,9],[8,1],[4,18],[0,16]],[[5199,8249],[-3,19],[6,6],[21,2],[6,-18],[0,12],[8,-4],[2,20],[9,1],[-8,29],[10,6],[-9,13],[-1,9]],[[5240,8344],[22,-5]],[[6201,5844],[-9,-28]],[[6192,5816],[-6,4],[-22,-7],[-4,8]],[[6160,5821],[0,12]],[[6160,5833],[0,24],[10,22],[7,22]],[[6177,5901],[8,-6],[3,9],[9,11]],[[6197,5915],[6,-14],[2,-25],[-10,-14],[-7,-3],[-3,-11],[13,3],[3,-7]],[[3294,6081],[4,-5],[0,-15],[-3,-3],[-3,16],[2,7]],[[5312,8347],[17,-10],[-1,-7],[-10,-1],[-8,6],[2,12]],[[5348,8350],[-12,-5],[4,7],[8,-2]],[[5272,8355],[7,-12],[-8,2],[1,10]],[[5413,8363],[6,-13],[-9,3],[3,10]],[[5287,8385],[7,0],[6,-15],[-2,-16],[-19,1],[-11,24],[19,6]],[[5342,8415],[7,-3],[0,-22],[-11,-12],[8,-11],[-13,-8],[5,-3],[-8,-10],[8,-5],[-9,-11],[-4,32],[-13,0],[-2,28],[13,12],[5,-13],[14,26]],[[5247,8463],[-2,-13],[-9,0],[11,13]],[[5240,8344],[-2,32],[-14,7],[3,14],[6,5],[-4,11],[-4,-6],[0,34],[16,1],[7,12],[9,-10],[-3,15],[18,12],[-32,-9],[-5,-13],[-7,3],[11,20],[17,1],[9,6],[10,19],[20,10],[-6,-10],[3,-20],[-7,-15],[2,-23],[12,-1],[5,-6],[-6,-16],[-11,2],[-4,-20],[-20,-21],[6,-16],[-7,-5],[8,-8],[-8,-10]],[[3006,6222],[2,16],[-6,10]],[[3002,6248],[0,0]],[[3002,6248],[-1,2]],[[3001,6250],[-1,4]],[[3000,6254],[8,11],[-2,9],[4,12],[-4,32]],[[3006,6318],[3,11],[14,-4],[4,6],[11,-10],[5,1],[4,-8],[11,0],[4,-20],[6,2],[11,-3],[-2,-5],[-11,2],[0,-8],[24,-7],[12,-20],[-9,-23],[-8,11],[-17,0],[-9,4],[-8,-14],[-9,-2],[-3,12],[-9,-8],[-5,2],[1,-9],[-10,-31],[-6,8],[-4,17]],[[5238,7310],[2,-6],[-7,-4],[1,-6],[-8,-8],[6,-5],[-4,-35],[3,-10],[-1,-19],[4,-5],[-4,-8],[-3,-30],[-11,-11],[-1,-9],[-7,-8],[-1,-14],[7,-25],[0,-11],[10,-7],[6,-15],[2,-20],[19,-24],[7,-62],[6,-44]],[[5264,6924],[-7,-7],[11,-29],[5,-37],[-2,-44],[4,-19],[-5,-34],[2,-21],[3,-4],[-2,-20],[-10,-9],[-3,-10],[18,-52],[0,-25],[5,-5],[1,-10],[6,-6],[7,5],[21,-13],[3,-4],[11,-43]],[[5332,6537],[-28,-35],[-99,-122],[-24,-40],[-17,-32],[-8,-8],[-39,-15]],[[5117,6285],[-26,-9],[-5,7],[4,15],[-2,11],[1,14],[-8,8],[-12,4],[-9,16],[-2,-4],[-9,5],[-4,14],[-14,12],[1,19],[-14,18],[-28,40],[-8,9],[-36,49],[-21,30],[-8,9],[-51,70]],[[4866,6622],[-64,78],[-16,21],[-28,33]],[[4758,6754],[0,22]],[[4758,6776],[0,59],[12,18],[18,22],[7,0],[8,8],[10,0],[27,5],[6,-5],[7,21],[11,17],[11,11],[6,11],[17,8],[3,14],[-8,21],[4,4],[1,15],[23,9],[-3,14],[12,5],[35,-3],[0,17],[6,7],[-11,14],[-4,11],[2,8],[-5,10],[2,18],[-4,8],[2,24],[-4,15],[3,6],[-4,7],[2,9],[-12,19]],[[4938,7203],[8,0],[18,16],[2,12],[11,12],[8,0],[1,7],[6,-5],[8,2],[5,15],[24,22],[25,4],[10,4],[8,-2],[11,13],[3,-4],[12,2],[9,8],[21,-1],[13,-7],[8,-8],[10,11],[14,5],[6,10],[12,-12],[8,2],[0,9],[9,-1],[7,-10],[13,4],[10,-1]],[[2774,5010],[-4,-1],[0,11],[5,9],[5,-3],[-6,-16]],[[2519,5143],[-4,-14],[-5,0],[9,14]],[[2493,5154],[0,-14],[-8,2],[1,11],[7,1]],[[2459,5168],[2,-12],[-7,2],[-1,8],[6,2]],[[2478,5174],[6,-6],[-5,-6],[-4,5],[3,7]],[[2463,5192],[4,-22],[6,-11],[-1,-9],[6,-10],[-4,-13],[-13,-3],[-3,10],[12,14],[-9,21],[-3,18],[5,5]],[[2909,5177],[-10,0],[6,-20],[4,-4],[-1,-13],[2,-13],[-5,0],[-4,-27],[-15,-40],[-16,-25],[-33,-24],[-9,-21],[1,-7],[-6,5],[-1,-22],[-8,-31],[-1,-17],[-4,-3],[-1,-12],[-4,-7],[-8,2],[-5,16],[0,9],[-8,2],[-9,11],[-8,-11],[-2,5],[4,10],[-5,9],[10,10],[-2,22],[-3,6]],[[2768,4987],[11,12],[6,40],[-3,5],[-4,-11],[-1,15],[-7,-22],[-11,18],[-7,5],[5,13],[-1,22],[-2,5],[2,15],[-4,19],[10,7],[3,21],[-1,11],[12,24],[1,31],[-2,13],[12,11],[19,9],[4,15]],[[5949,6986],[2,-6]],[[5951,6980],[17,-99]],[[5968,6881],[-4,-12],[-3,-33],[-5,-16],[0,-26],[-5,-14],[-13,15],[-6,17],[-10,16],[-1,26],[-8,12],[-5,14],[-2,23],[-4,-1],[-4,-16],[6,-10],[3,-16],[0,-14],[4,-6],[14,-42],[5,-5],[5,-36],[4,-4],[5,-25],[0,-11],[11,-43],[15,-51],[8,-35],[15,-29],[-8,3],[2,-41],[3,-16],[6,-13],[10,-6],[2,-8],[16,-29]],[[6024,6449],[-78,0],[-73,0],[0,14],[-6,-14],[-57,0],[-71,0],[-46,0]],[[5693,6449],[0,421],[-3,10],[-1,24],[-4,13],[6,20],[3,17],[-4,22],[0,14],[8,16]],[[5698,7006],[1,-7],[7,-2],[12,7],[14,-6],[27,-8],[1,-7],[8,-5],[5,4],[4,-9],[21,-6],[8,-9],[13,7],[16,22],[4,-4],[4,14],[3,-3],[11,6],[-9,-10],[9,2],[7,11],[13,-9],[8,5],[-3,-15],[7,-4],[1,-7],[6,2],[0,9],[6,-10],[7,-4],[31,7],[9,9]],[[6111,6097],[3,-11],[8,-6],[-12,2],[-2,8],[3,7]],[[6177,5901],[-6,15],[-8,12],[-5,18],[-14,19],[-7,23],[-5,10],[-10,7],[-5,9],[-9,-1],[-10,9],[-10,-6],[-5,10],[-3,-8],[-13,-5],[-6,16],[-3,-1],[-6,12],[-9,-45],[-6,19],[-5,1],[-2,-8],[-10,1],[-6,-4]],[[6014,6004],[-3,51],[6,17],[1,18],[3,5],[5,24],[-2,23],[3,6],[-1,17],[12,-2],[3,17],[21,13],[5,18],[5,9]],[[6072,6220],[9,-35],[0,-9],[6,-31],[1,-24],[3,-23],[4,-4],[0,-17],[5,-2],[2,-22],[4,-1],[-2,18],[3,4],[6,-7],[0,-17],[6,-8],[3,5],[6,-3],[3,-12],[12,-6],[12,-31],[2,-9],[9,-6],[3,-12],[3,1],[4,-13],[1,-13],[4,2],[6,-13],[0,-8],[10,-9]],[[5941,7196],[-3,1]],[[5938,7197],[-2,0]],[[4503,6784],[-3,-9],[-5,3],[8,6]],[[4571,6803],[1,-17],[-5,-6],[-6,6],[2,19],[8,-2]],[[4552,6828],[-7,-11],[-2,-14],[-7,-8],[-6,21],[12,4],[4,8],[6,0]],[[4604,6803],[7,35],[5,-4],[-4,-26],[-8,-5]],[[4503,6844],[4,-7],[-3,-16],[-4,14],[3,9]],[[4626,6861],[0,-6],[-9,-10],[-1,11],[10,5]],[[4919,7214],[-1,3]],[[4918,7217],[1,-3]],[[4851,7247],[-1,5]],[[4850,7252],[1,-5]],[[5043,7435],[2,-6],[-6,-9],[-6,2],[10,13]],[[5088,7483],[0,-11],[8,0],[-7,-23],[-4,-6],[-8,7],[-3,10],[-9,0],[9,14],[14,9]],[[5114,7490],[6,-11],[-3,-3],[-12,12],[9,2]],[[5055,7627],[0,0]],[[4950,7681],[11,-8],[1,-9],[16,-8],[6,-11],[6,3],[8,-7],[20,0],[0,9],[18,-7],[3,-7]],[[5047,7630],[8,-9],[8,4],[6,-5],[12,8],[7,-3]],[[5088,7625],[4,-5],[-6,-6],[3,-18],[-4,-6],[-23,-20],[-3,-10],[-17,-6],[-15,-8],[-8,-13],[5,-6],[-8,-7],[-7,-18],[-8,-14],[-11,-32],[3,-21],[6,-15],[7,-7],[-21,-22],[-9,-36],[4,-6],[-19,-4],[-12,-20],[-2,-15],[-7,-12],[-5,6],[-7,-1],[-3,-8],[-6,4],[-42,-1],[-7,-13],[-15,-5],[-4,-16]],[[4851,7264],[0,0]],[[4851,7264],[-6,-7],[-14,11],[-9,24],[-2,18],[-12,13],[-14,2]],[[4794,7325],[-3,18],[7,27],[6,2],[3,10],[-5,0],[-6,14],[1,17],[6,6],[3,12],[-5,3],[-5,22],[-6,12],[14,0],[4,14],[-4,17],[7,8],[-1,30],[-3,6],[8,16],[6,4],[6,14],[-10,6],[0,16],[-16,2],[-2,-7],[-11,-3],[-3,3],[-13,-3],[3,13],[-4,6],[-15,-10]],[[4756,7600],[-4,7],[8,12],[-7,6],[1,13],[-6,-4],[1,10],[-7,18],[12,17],[5,-3],[11,5],[-2,4],[13,17],[6,2],[13,-13],[36,2],[14,-2],[17,-9],[16,0],[17,6],[3,-6],[11,-2],[10,4],[16,-8],[10,5]],[[5628,8557],[8,2],[12,-10],[-17,-13],[-15,-4],[-10,7],[0,13],[22,5]],[[5631,8581],[8,-10],[-15,-8],[-3,11],[-9,4],[19,3]],[[5778,8608],[4,-7]],[[5782,8601],[-5,-1]],[[5777,8600],[3,-1]],[[5780,8599],[-7,-9]],[[5773,8590],[-4,-10]],[[5769,8580],[-12,1],[-9,-8],[13,-28],[6,-22]],[[5767,8523],[5,-8],[-7,-3],[-6,-16]],[[5759,8496],[-14,5],[-8,-6],[-15,19],[-26,13],[-21,-12]],[[5675,8515],[7,26],[-10,-3],[-13,5],[-6,13],[-3,20],[6,3],[-5,14],[18,5],[6,10],[30,1],[8,10],[35,-13],[27,-2],[3,4]],[[6160,5833],[0,-12]],[[6192,5816],[-8,-22],[5,-23],[5,-13],[6,-8],[1,-13],[4,-12],[5,-4],[12,-21],[51,-34],[31,-23],[28,0]],[[6332,5643],[-21,-43],[-31,-61],[-14,-31],[-14,-34],[-5,-9],[-27,3],[-20,-14],[-8,-12],[-1,-8],[-9,-7],[-12,-2],[-7,-13]],[[6163,5412],[-19,-3],[-3,2],[-9,19],[-26,-24],[-8,-27],[-25,12],[-15,0],[-7,11],[-28,36],[-23,1],[-3,10]],[[5997,5449],[-4,8],[0,27],[-2,9],[-11,-2],[-1,9],[-5,7],[-3,12],[0,13],[-4,11],[-3,24],[-6,5],[0,8],[-6,4],[-7,24],[-9,16],[-19,8],[-1,9],[5,9],[0,17],[12,3],[2,-5],[7,3],[5,9],[-1,50]],[[5946,5727],[4,33],[3,9],[-1,22],[7,18],[6,-7],[5,5],[0,25],[4,16],[-1,14],[6,8],[2,12],[11,31],[11,1],[0,19],[3,19],[6,24],[2,28]],[[5634,8649],[-3,-11],[-9,9],[12,2]],[[5804,9158],[-14,-7],[8,-9],[-8,-12],[7,-21],[18,-7],[18,-21],[-2,-10],[-23,-30],[-1,-9],[13,-20],[11,-25],[5,-23],[-10,-1],[2,-32],[-7,-6],[6,-11],[9,-1],[-2,-23],[14,-8],[1,-11],[-17,-18],[14,-16],[21,-15],[9,-17],[-9,-24],[-25,-28],[-15,-23],[-18,-22],[-10,-7],[-27,-31]],[[5772,8670],[-31,-8],[-19,-2],[-8,-8],[-15,0],[-6,-6],[-38,-11],[-10,-6],[-10,17],[3,10],[-12,-6],[2,10],[-10,0],[-12,14],[-5,-7],[-8,8],[-2,23],[5,3],[3,23],[-5,25],[-5,3],[3,22],[-6,2],[3,27],[13,9],[-5,12],[11,-3],[13,8],[-5,9],[17,9],[3,10],[13,6],[10,18],[17,18],[5,16],[25,8],[-4,14],[2,17],[-33,19]],[[5671,8973],[-15,37],[10,20],[-12,20],[5,16],[-7,26],[5,3],[-23,26],[-21,5],[-41,32]],[[5572,9158],[12,1],[7,14],[10,-2],[21,-31],[22,-6],[20,12],[27,-15],[7,13],[18,12],[-1,17],[6,22],[15,15],[16,-2],[22,10],[17,-16],[18,-7],[6,-12],[-14,-14],[3,-11]],[[9954,4093],[-5,-13],[-7,0],[12,13]],[[9951,4184],[0,-5],[9,-12],[2,-26],[-10,-2],[-3,-6],[-10,-2],[-15,11],[-1,12],[5,7],[-2,6],[7,12],[18,5]],[[0,4252],[9987,-23],[-2,-11],[4,2],[7,14],[0,-17],[-16,-2],[-1,7],[-11,-10],[-4,-9],[-7,15],[12,16],[13,4],[2,8],[-9984,6]],[[3351,2225],[4,-3],[-17,-28],[-11,-4],[-4,-11],[-8,-4],[-11,12],[16,3],[-4,17],[12,1],[-13,15],[11,-5],[9,6],[15,-3],[1,4]],[[3368,2227],[7,2],[4,-8],[12,3],[4,-18],[-17,-11],[-16,0],[8,-4],[-12,-6],[1,-10],[-11,5],[3,-11],[-9,12],[6,17],[13,11],[-3,14],[10,4]],[[6541,3981],[5,-2],[5,-13],[-1,-13],[-7,-1],[-6,6],[-4,14],[8,9]],[[6252,4454],[4,-5],[-1,-13],[-3,-1],[0,19]],[[3483,5317],[7,10],[4,16],[2,29],[4,19],[-10,24],[-3,26],[-1,25],[4,16],[5,9]],[[3495,5491],[3,5],[3,18],[12,-10],[11,-4],[6,-6],[10,-19],[22,-31],[3,-18],[-1,-11]],[[3306,6034],[4,-11],[-1,-7],[-9,13],[1,11],[5,-6]],[[3288,6120],[2,-14],[-4,-5],[-3,22],[5,-3]],[[3295,6124],[5,-5],[-9,-3],[1,18],[3,-10]],[[5262,7641],[2,-7],[1,-27],[-4,-7],[-2,-24],[-7,-9],[-8,9],[3,8],[-7,3],[2,19],[-5,15],[3,10],[13,13],[6,-1],[3,16],[0,-18]],[[5160,8036],[5,-6],[11,0]],[[5172,7849],[16,7]],[[5195,7827],[-7,-5],[5,-18],[5,-6],[-2,-11],[-13,-6],[3,-11],[8,-5],[1,-9],[-6,-11],[4,-14],[10,-7],[9,3],[-4,-22]],[[5208,7705],[-2,-3]],[[5206,7702],[-2,-1]],[[5204,7701],[-11,-10],[-9,-23],[-14,-6],[-22,9],[0,7],[-15,1],[-7,6],[-11,0],[-5,6],[-13,-17],[-10,-6],[-3,-9],[0,-26],[4,-8]],[[4950,7681],[9,13],[6,48],[-1,11],[4,49],[11,-11],[0,8],[-14,16],[3,6],[1,26],[-20,14],[-9,18],[4,14],[-5,12],[-8,1],[-3,15],[-6,-3],[-11,11],[-18,6],[-4,6],[-11,-5],[0,7],[-9,7],[12,5],[-14,12],[1,13],[10,6],[22,0],[2,9],[12,2],[10,-20],[12,9],[16,-4],[4,8],[-1,28],[-6,8],[0,18],[16,0],[-1,-11],[5,-6],[30,-4],[8,7],[-5,3],[2,11],[10,9],[18,7],[11,15],[0,37],[10,8],[17,4]],[[4800,8771],[13,-21],[-14,13],[1,8]],[[4808,8772],[9,-11],[-11,3],[2,8]],[[9394,5584],[3,-9],[-4,-1],[1,10]],[[5308,4956],[-3,13],[-10,15],[0,9],[-17,28],[-8,19],[7,-8],[5,3],[-8,8],[-7,1],[-2,13],[-9,21],[1,10],[8,2],[-2,7],[-4,-5],[-9,16],[-1,11],[-6,18],[5,6],[2,-7],[2,12],[6,13],[1,14],[-1,27],[2,-7],[11,-2],[-8,7],[-5,19],[9,-6],[-2,24],[3,7],[4,-4]],[[5272,5240],[6,1],[36,-1],[0,68]],[[4964,8107],[6,-6],[-7,-6],[-6,6],[7,6]],[[4883,8252],[-4,-10],[-6,16],[10,-6]],[[4825,8298],[-11,-2],[-8,20],[-10,-17],[-14,5],[-9,13],[11,10],[-5,6],[11,2],[8,19]],[[4798,8354],[20,10],[13,-2],[0,-8],[18,-35],[-7,-6],[-11,-19],[-6,4]],[[4857,8375],[-7,14],[7,-1],[0,-13]],[[4830,8398],[2,-9],[-7,-6],[-6,6],[1,10],[10,-1]],[[4839,8409],[-5,-13],[-4,6],[9,7]],[[4832,8443],[11,-10],[-2,-5],[-18,-4],[7,10],[-7,5],[9,4]],[[4795,8489],[3,-18],[-4,1],[1,17]],[[4800,8503],[1,-8],[-10,7],[9,1]],[[4824,8506],[5,-20],[14,-6],[-9,-6],[-10,1],[-13,15],[11,5],[2,11]],[[4827,8543],[-5,-20],[-16,-15],[3,11],[-7,3],[2,15],[23,15],[0,-9]],[[4907,8560],[9,0],[-6,-20],[-22,-20],[6,-7],[-8,-14],[22,8],[20,-3],[16,2],[7,-13],[-6,-9],[-6,-24],[-9,-18],[-10,-8],[8,-10],[-21,-15],[9,-4],[11,6],[13,-8],[14,-19],[4,-29],[8,-27],[19,-9],[4,-13],[8,-7],[-4,-5],[11,-24],[-7,1],[12,-23],[-7,-19],[8,-7],[5,11],[20,-2],[11,-10],[3,-16],[-5,-24],[-4,0],[-14,-26],[-11,-12],[12,-3],[13,1],[-3,-14],[-11,-13],[-5,1],[-14,-11],[-12,6],[-18,-6],[-3,7],[-18,-7],[-14,-1],[2,-8],[-27,9],[-13,-6],[-2,-17],[-8,-7],[-11,10],[-16,-3],[-12,-21],[-8,10],[19,25],[7,14],[1,12],[6,-1],[2,11],[12,3],[11,-4],[11,2],[8,20],[-23,-9],[-8,12],[-13,-3],[0,6],[-10,3],[-8,-7],[-10,18],[13,6],[20,18],[2,9],[-2,24],[-17,-4],[11,12],[5,11],[27,10],[8,19],[-4,11],[5,2],[-1,14],[-9,-6],[-11,23],[9,26],[-19,-10],[-11,5],[1,-10],[-13,10],[-5,-5],[-1,21],[11,19],[-15,29],[-8,-15],[-4,-23],[-5,-1],[3,22],[-1,18],[5,24],[8,18],[-12,-13],[-5,11],[0,17],[5,10],[-6,19],[7,25],[12,0],[-5,20],[11,21],[20,-6],[26,7]],[[4912,8589],[-2,-13],[-4,10],[6,3]],[[4964,8673],[4,-27],[-15,5],[9,7],[2,15]],[[6206,7550],[-23,27],[-5,-9],[-8,5],[-9,-5],[-8,5]],[[6153,7573],[7,17],[-8,51],[-10,6],[-3,11],[-21,13],[-8,10]],[[6110,7681],[2,9],[16,0],[27,-19],[21,2],[7,-6],[6,1],[10,-14],[17,-9],[-2,-8],[6,-4],[16,12],[7,-8],[4,8],[11,-14],[11,0],[-2,-18],[8,-10],[14,-9]],[[4995,5824],[5,-3],[-3,-26],[10,-13],[3,-27],[-4,-30],[8,0],[-2,-24],[2,-8],[-4,-8],[9,-19],[-3,-11],[0,-28],[-3,-15],[4,-3],[-1,-23],[-3,-2],[6,-28],[8,-9],[5,-13]],[[5032,5534],[-7,-19],[-15,1],[-21,-17],[-12,-16],[-6,0],[-6,-7],[-11,-5],[-10,-15],[-7,8],[-24,12]],[[4913,5477],[8,2]],[[4851,7264],[0,0]],[[4683,5897],[-3,-14],[6,-9],[6,11],[4,0],[8,-17],[4,13],[5,5],[16,-11],[2,7],[14,19],[5,-5],[2,-20],[3,-1],[-1,-21],[13,-17],[-9,-23],[5,5],[6,-3],[0,-28],[9,-12],[0,-8]],[[4764,5618],[-6,8],[-1,-12],[-11,-17],[-5,13],[-4,0],[3,19],[-5,25],[0,11],[-8,10],[-7,-7],[-6,3]],[[4714,5671],[-3,1],[-5,-11],[-3,4],[5,15],[-3,10],[0,15],[-4,1],[2,13],[-15,39],[-19,0],[-17,-7],[-5,-26],[-12,-21],[-5,-1]],[[4630,5703],[4,8],[-12,23],[0,12],[-4,-2],[-6,13],[-20,29],[4,20],[-5,-10],[-3,21],[-4,-14],[-2,11]],[[4582,5814],[8,30],[12,8],[16,4],[0,19],[-6,11],[7,3],[-1,24]],[[4618,5913],[19,-3],[-1,-8],[17,-6],[3,-5],[7,6],[20,0]],[[4534,5935],[-2,17],[4,7],[8,-14],[5,5],[-8,2],[-1,13]],[[4540,5965],[29,0],[4,12],[7,2],[8,-5],[2,-7],[6,1],[4,-10],[12,7],[3,-14],[-15,-6],[-5,7],[-11,6],[-6,7],[-1,-9],[-5,-4],[-12,-1],[0,-11],[-24,1],[-2,-6]],[[4553,5826],[1,-7],[-6,3],[5,4]],[[4582,5814],[-1,9],[-5,-7],[-7,20],[5,15],[8,-2],[-9,7],[-2,-8],[-3,8],[2,11],[8,-1],[-5,6],[-6,-7],[-11,-6],[3,14],[-7,-6],[-6,6],[1,13],[-5,-2],[-7,9]],[[4535,5893],[14,7],[15,-1],[13,14],[41,0]],[[5272,5240],[-3,6],[-10,3],[3,15],[10,28],[0,26]],[[5243,5399],[5,-8],[-8,-24],[-6,4],[0,10],[4,1],[1,11],[4,6]],[[5663,7229],[13,-11],[9,5],[22,-8],[8,3],[-1,-12],[9,6],[7,-7],[-2,-5],[-25,-2],[-16,-4],[0,9],[-10,6],[-24,5],[1,17],[4,5],[5,-7]],[[5756,7245],[-1,-17],[-3,-5],[4,22]],[[5640,7268],[-4,-2],[0,12],[4,-10]],[[5784,7281],[-5,-19],[-8,-12],[-2,13],[5,13],[10,5]],[[5710,7319],[-4,-10],[-2,10],[6,0]],[[5731,7350],[-10,-7],[2,7],[8,0]],[[5748,7357],[-5,-6],[-5,6],[10,0]],[[5576,7363],[5,-7],[-4,-5],[-5,10],[4,2]],[[5690,7366],[3,-13],[-8,16],[5,-3]],[[5571,7398],[6,-23],[-8,2],[-3,14],[5,7]],[[5723,7405],[3,-16],[-4,-9],[-5,25],[6,0]],[[5651,7423],[11,-14],[8,0],[5,-29],[7,0],[0,-10],[-7,1],[-8,23],[-11,0],[-1,9],[-12,17],[-9,-1],[13,12],[4,-8]],[[5733,7446],[6,-17],[-13,0],[4,10],[-10,-4],[-2,8],[13,8],[2,-5]],[[5553,7474],[-2,-18],[-5,18],[7,0]],[[5706,7488],[-2,-14],[-9,3],[0,9],[11,2]],[[5688,7522],[-8,1],[4,10],[4,-11]],[[5586,7536],[18,3],[4,11],[23,3],[5,10]],[[5731,7585],[7,-8],[1,-14],[-8,-6],[0,-15],[-8,-13]],[[5723,7529],[-3,5],[-11,2],[-11,8],[-12,-10],[-8,6],[-9,-12],[-11,1],[4,-19],[-4,-10],[8,-6],[-1,-11],[-9,17],[-8,0],[0,-6],[10,-14],[-9,6],[-2,14],[-12,9],[0,14],[-6,-6],[-3,-28],[8,-15],[2,-11],[5,-6],[7,-17],[-11,9],[-4,-7],[6,-16],[-9,-6],[17,-11],[0,-9],[8,-2],[13,-15],[-2,-5],[2,-25],[-3,-1],[-12,22],[-15,-11],[5,-3],[0,-11],[10,-10],[-11,-8],[-11,16],[0,-8],[7,-21],[3,-20],[0,-17],[-11,22],[-5,-6],[-4,-14],[0,13],[-6,19],[-6,-1],[0,-14],[-7,3],[-3,13],[3,14],[-3,15],[-13,17],[7,16],[7,2],[6,9],[19,-10],[10,-12],[9,10],[-5,6],[-17,14],[-1,-6],[-12,4],[-12,-7],[-4,8],[-8,-4],[-5,24],[-4,-1],[-1,16],[-13,20],[-2,14],[-5,4]],[[5583,7526],[0,0]],[[5582,7531],[4,5]],[[3288,5876],[-5,-2],[5,13],[0,-11]],[[3786,8632],[-12,-4],[4,9],[8,-5]],[[3787,8645],[3,-11],[-11,4],[-4,10],[12,-3]],[[3846,8835],[12,-11],[-9,0],[-12,15],[9,-4]],[[3579,8886],[3,14],[6,-4],[-9,-10]],[[3876,8910],[-1,-14],[-10,26],[11,-12]],[[3961,8973],[2,-9],[-18,-2],[0,10],[16,1]],[[3583,9209],[9,-5],[-9,-16],[-11,9],[11,12]],[[3535,9210],[20,-7],[5,-10],[-9,-9],[-40,-14],[-19,9],[8,9],[-21,2],[3,11],[-6,23],[14,9],[30,-7],[15,-16]],[[4292,9258],[5,-6],[-22,-8],[-56,-5],[5,12],[24,14],[11,0],[27,11],[6,-18]],[[3513,9274],[-13,6],[9,10],[4,-16]],[[3537,9281],[-14,10],[21,1],[-7,-11]],[[3472,9375],[-13,-11],[-4,9],[17,2]],[[4335,9380],[22,-3],[33,-25],[-20,4],[17,-11],[-5,-9],[-50,20],[-10,8],[0,15],[13,1]],[[4354,9391],[36,-8],[-3,-13],[-17,-1],[-14,11],[-38,1],[0,5],[36,5]],[[4333,9407],[21,-8],[-47,6],[55,-12],[-48,-4],[-29,9],[13,12],[35,-3]],[[4418,9469],[11,-1],[11,-14],[-32,-5],[-18,7],[3,8],[25,5]],[[4439,9496],[13,-2],[-12,-10],[-14,7],[13,5]],[[4505,9520],[-7,-8],[21,-2],[-15,-6],[-30,-2],[2,17],[29,1]],[[4481,9596],[3,-41],[-16,34],[13,7]],[[2994,9643],[23,-5],[-21,-3],[-2,8]],[[4445,9674],[18,-11],[-32,9],[14,2]],[[4519,9788],[-33,-16],[-26,9],[49,14],[10,-7]],[[3575,9904],[-53,7],[4,13],[49,-20]],[[3722,9942],[44,-15],[-28,-11],[-44,11],[-20,15],[48,0]],[[3880,9983],[38,-14],[-47,9],[9,5]],[[4105,9998],[43,-1],[139,-17],[-12,-6],[-116,-3],[-142,-14],[100,5],[47,8],[96,-4],[39,6],[2,-18],[34,4],[72,-17],[-31,-17],[-54,-4],[-152,-7],[-81,-17],[1,-9],[30,8],[107,13],[89,-4],[-3,-12],[-44,-9],[-2,-11],[85,20],[2,14],[51,4],[11,-19],[-7,-14],[-56,-36],[-16,-18],[53,26],[58,30],[75,-8],[37,24],[53,-1],[57,-12],[13,-8],[-64,-27],[-24,0],[7,-12],[-31,-8],[-46,1],[36,-15],[-18,-11],[-40,-3],[-44,6],[-25,-22],[11,-12],[20,3],[-9,-21],[17,-12],[-27,-8],[0,-11],[-28,-2],[-11,-42],[-18,-22],[18,0],[10,17],[51,-16],[-6,-10],[-19,10],[-22,-2],[38,-26],[10,6],[21,-5],[2,-18],[-10,-12],[-35,13],[-27,-3],[-24,-13],[-13,12],[-14,-8],[10,-12],[18,1],[0,-16],[19,4],[30,-4],[6,-11],[-15,-4],[21,-14],[3,-29],[-17,-4],[-4,9],[-16,-2],[-26,17],[8,-12],[24,-14],[-8,-27],[30,-5],[7,6],[13,-11],[-18,-15],[-16,2],[-7,11],[-36,-2],[-11,-18],[9,-27],[-2,21],[9,3],[36,-10],[-7,-26],[-28,3],[-18,-14],[-36,11],[-14,9],[-1,13],[-10,-16],[-25,-4],[-17,-16],[24,-7],[-16,-14],[22,-6],[6,-12],[-19,-7],[21,1],[23,-15],[33,-16],[-17,-14],[20,9],[14,-3],[-17,-11],[2,-17],[9,14],[10,-1],[0,-35],[8,-18],[-13,-10],[-11,3],[-7,22],[-2,-22],[-19,0],[-16,10],[-9,27],[-24,13],[-15,14],[-20,5],[-16,-3],[-26,23],[-16,-2],[31,-13],[-8,-6],[26,-8],[25,1],[11,-12],[-16,-13],[-24,-7],[-44,2],[14,-7],[-11,-17],[2,-11],[40,7],[13,-6],[-17,-3],[-27,-14],[-16,-3],[34,-3],[11,16],[15,-4],[29,13],[23,-11],[25,-7],[33,0],[0,-8],[-14,0],[-4,-12],[-19,-2],[1,-10],[-13,-8],[-17,-1],[2,-9],[-26,-21],[-31,-10],[-13,-9],[-23,1],[1,-6],[-24,-7],[-9,4],[-5,-11],[-18,10],[-1,-16],[-30,-3],[-30,17],[6,-17],[-4,-12],[-11,1],[-16,-12],[-12,-33],[-13,-5],[-1,-15],[-27,-26],[-15,-2],[-14,-18],[-13,3],[-20,-12],[-17,14],[15,16],[-12,0],[-7,-21],[-14,-1],[8,-16],[-17,1],[-7,-6],[-8,9],[-14,-12],[2,-15],[-14,-14],[-10,8],[-13,-3],[1,-12],[14,-11],[-1,-13],[-13,-9],[-12,1],[3,-8],[18,-1],[7,-27],[-13,0],[6,-7],[-18,-12],[-13,6],[12,-15],[-4,-15],[-21,-8],[-6,-11],[9,-15],[-21,9],[12,-11],[9,-1],[-8,-21],[11,5],[-6,-22],[-8,-6],[7,-7],[-17,-13],[9,-6],[-3,-17],[-20,3],[20,-7],[-12,-15],[-11,5],[14,-18],[0,-9],[-29,6],[-13,-12],[-12,10],[3,19],[-9,0],[6,10],[-15,-11],[-11,20],[6,8],[-3,10],[-10,-9],[-22,-8],[3,7],[-19,-8],[-17,0],[14,12],[-20,6],[-4,9],[7,5],[-20,5],[-1,9],[-10,13],[8,10],[-10,16],[-15,2],[-8,9],[5,28],[-12,7],[15,8],[-28,-3],[-2,19],[-11,10],[3,23],[-6,8],[14,-1],[13,13],[6,16],[9,-13],[-4,16],[-11,4],[-15,-12],[2,10],[-19,-33],[-9,0],[1,29],[22,16],[-10,2],[-8,-13],[-23,50],[-12,0],[-4,23],[19,15],[18,9],[21,21],[-21,-13],[-3,-7],[-33,-23],[-9,1],[1,22],[11,11],[16,-1],[5,10],[-34,3],[-6,14],[49,13],[17,-3],[12,6],[-28,-2],[-28,-7],[-21,-2],[2,10],[25,18],[15,2],[12,-7],[24,4],[-49,5],[-24,-17],[0,18],[22,10],[-5,12],[15,-1],[16,-8],[21,2],[-6,8],[7,12],[-13,0],[9,-8],[-31,-6],[-3,7],[-15,-1],[13,14],[18,4],[23,-2],[-5,11],[7,22],[16,-8],[0,19],[-17,-7],[10,18],[-2,11],[15,4],[-8,11],[-24,0],[-25,5],[-25,17],[-22,4],[-15,18],[11,6],[48,-8],[25,-15],[24,-6],[5,11],[-14,-6],[1,16],[-24,21],[17,-6],[-5,9],[-22,-1],[16,9],[-4,6],[-19,-12],[5,13],[24,4],[-8,4],[-21,-8],[-7,9],[25,4],[-41,6],[-4,7],[-14,-11],[0,-11],[-14,-5],[-24,1],[-17,17],[17,13],[-8,8],[19,13],[-21,11],[17,5],[10,12],[-3,15],[-18,4],[4,18],[-30,38],[7,13],[-16,5],[7,11],[-21,13],[4,8],[-31,10],[-14,17],[13,3],[-7,17],[-16,-2],[-4,10],[-26,9],[-17,-2],[-4,9],[-42,5],[-31,8],[-6,-11],[-27,5],[1,-9],[-35,-1],[7,10],[-15,1],[-6,-12],[-18,11],[-7,-6],[23,-12],[-58,9],[-30,15],[36,17],[-57,7],[-26,11],[12,12],[50,5],[21,6],[50,-3],[14,9],[-19,13],[-24,-11],[-45,-4],[-29,6],[21,8],[-33,-1],[13,9],[-30,-4],[-44,23],[8,21],[91,16],[8,10],[43,9],[42,-2],[31,23],[-5,30],[-56,2],[-12,15],[39,20],[28,7],[8,12],[46,13],[44,-9],[16,6],[6,19],[-19,15],[104,24],[90,11],[24,-14],[-6,-33],[24,17],[-1,11],[85,-18],[-31,13],[44,0],[-31,12],[-15,20],[65,-8],[77,-19],[22,-14],[25,1],[-8,28],[38,-1],[-68,26],[132,2],[-157,7],[28,14],[74,4],[6,5],[54,-17],[95,1],[-42,3],[53,5],[-49,3],[0,13],[180,11]],[[2530,6098],[8,-8],[4,5],[7,-7]],[[2549,6088],[-17,-28],[-9,-9],[-2,-15],[2,-14],[-6,-9]],[[2517,6013],[-6,-1],[2,-10],[-5,-3],[-10,-17],[-1,-9]],[[2497,5973],[-15,12],[-19,1],[-9,9],[-17,25]],[[2437,6020],[3,7],[-1,33],[1,10],[11,38],[36,0],[2,20],[-7,4],[-4,17],[-8,7],[-1,7],[-9,13],[12,0],[1,33],[50,0]],[[9022,5957],[-2,-11],[-3,10],[5,12],[4,-3],[-4,-8]],[[3409,5499],[-2,-9],[4,-10],[-2,-8],[-13,-2],[-5,-8],[2,-9],[-6,-39],[4,-7],[2,-13],[5,-8],[0,-8],[10,0],[2,-28],[6,-15],[0,-8],[9,-27],[6,-5]],[[3312,5482],[-18,43],[8,14],[-2,28],[9,7],[5,-2],[11,21],[-7,0],[-5,21],[5,19],[5,3],[15,22],[-6,18]],[[3332,5676],[4,-9],[7,-3],[15,-20],[17,-36],[1,-15],[-4,-18],[1,-10],[3,13],[4,2],[10,-8],[9,-18],[2,-9],[6,-1],[5,-11],[0,-27],[-3,-7]],[[8172,6482],[5,-7],[-5,-9],[-9,5],[5,9]],[[7037,2130],[10,-6],[-7,-4],[-3,10]],[[2691,6046],[-12,-1],[-4,-8],[-12,-4],[-8,-7],[-8,2],[-3,9],[-6,-6],[-4,-11],[0,-12],[-5,-3],[-5,-13],[-6,-5],[0,-7],[-8,9],[-8,-14],[-13,-2],[2,-26],[-6,-2],[0,-10],[-11,-5]],[[2574,5930],[-4,22],[-10,3]],[[2560,5955],[3,17],[-2,12],[-6,-1],[-3,6],[-10,-8],[0,7],[-7,3],[-8,17],[-10,5]],[[2549,6088],[8,9],[7,2],[7,-7],[2,4],[12,-6],[4,3],[12,-1],[13,11],[15,-6],[11,6],[18,-9],[13,-22],[-8,6],[10,-19],[8,0],[-7,9],[9,-6],[4,-13],[4,-3]],[[5512,7634],[1,-9]],[[5513,7625],[-8,12],[-27,21],[12,-5]],[[5466,7679],[-8,-5],[-2,8],[10,-3]],[[5412,7751],[11,-14],[-10,8],[-1,6]],[[5401,7772],[0,-20],[-5,27],[5,-7]],[[5404,7789],[3,-10],[-5,-3],[2,13]],[[5458,7861],[5,-3],[18,-29],[6,0],[9,-10],[17,0],[11,9]],[[5524,7828],[3,-33],[12,-10],[-10,-3],[-1,-17]],[[5488,7656],[-12,12],[-6,13],[-14,10],[-11,-4],[-2,10],[-14,14],[-9,17],[8,5],[-15,23],[-1,23],[-9,12],[-7,2],[-3,-20],[-8,-11],[-8,20],[0,20]],[[5377,7802],[9,-3],[13,3],[6,6],[20,-9],[-2,17],[12,6],[-2,20],[9,5],[8,12],[8,2]],[[3002,6248],[-1,2]],[[2977,6260],[-12,8],[1,7],[11,-10],[0,-5]],[[3000,6254],[2,-6]],[[3006,6222],[-8,11],[-24,-5],[-11,6],[-8,0],[-6,-5],[1,-8],[-12,16],[-7,4],[2,15],[6,2],[16,-10],[24,-4],[4,8],[7,-2],[0,7],[-13,23],[1,19],[3,2],[-9,11],[-11,1],[-2,6],[8,10],[11,2],[13,-11],[15,-2]],[[5614,7970],[21,-26]],[[5635,7944],[-8,-11],[-4,2],[-13,-17],[-4,-19],[-5,-6],[-4,-21],[-6,-5],[-1,-12],[-6,-10],[-7,2],[-5,-8],[-10,-1]],[[5562,7838],[-16,4],[-11,-11],[-11,-3]],[[5458,7861],[-7,21],[-4,-1]],[[5476,7947],[6,-1],[10,-13],[15,0],[14,3],[-1,10],[7,4],[14,3],[4,7],[8,-7],[12,11],[3,13],[9,3],[9,-5],[11,3],[5,-11],[12,3]],[[8426,4574],[2,-3],[-6,-11],[-11,-6],[0,8],[6,3],[10,17],[-1,-8]],[[8386,4582],[-1,-10],[-6,2],[7,8]],[[8333,4644],[9,-18],[4,2],[10,-24],[-10,-15],[-9,5],[-5,14],[-10,12],[-15,3],[-4,11],[10,10],[20,0]],[[8473,4637],[-2,-11],[-16,-29],[-8,0],[-2,-6],[-12,-5],[-3,9],[7,6],[-5,10],[2,16],[10,18]],[[8444,4645],[2,-5],[7,4],[3,10]],[[8456,4654],[13,13]],[[8469,4667],[7,-5],[0,-8],[-6,-2],[3,-15]],[[8318,4695],[-3,-16],[1,18],[2,-2]],[[8424,4708],[1,-8],[-8,-2],[4,11],[3,-1]],[[8242,4700],[-7,-24],[3,-4],[-11,-3],[-10,6],[6,6],[-1,15],[7,13],[8,-1],[5,-8]],[[8442,4708],[-5,-4],[-10,-16],[-5,4],[7,9],[-2,6],[12,4],[3,-3]],[[8450,4700],[-5,-10],[-4,6],[11,16],[-2,-12]],[[8858,4702],[-10,-1],[7,12],[3,-11]],[[8265,4700],[-2,12],[5,2],[-3,-14]],[[8459,4715],[2,-3],[13,1],[1,-11],[-22,-6],[3,18],[3,1]],[[8550,4716],[8,-3],[-2,-6],[-6,9]],[[8276,4716],[4,0],[5,-15],[6,7],[6,-6],[8,2],[1,-19],[-18,-12],[0,10],[-7,-11],[-12,-2],[-9,-9],[-7,-2],[-11,5],[2,11],[-1,13],[12,14],[6,-8],[4,5],[6,-18],[14,4],[-6,11],[-4,1],[-6,16],[7,3]],[[8415,4713],[2,-8],[-7,-8],[2,-8],[-13,-10],[-8,1],[-9,-9],[-11,5],[-1,-7],[-12,0],[-2,6],[-7,2],[-9,-3],[-13,4],[0,11],[13,18],[19,-4],[15,-16],[15,11],[6,-12],[6,1],[0,7],[12,12],[-4,4],[3,8],[3,-5]],[[8208,4712],[5,-15],[-14,-15],[-7,13],[-11,8],[-3,14],[12,-6],[8,8],[10,-7]],[[8604,4733],[0,-14],[-5,14],[5,0]],[[8519,4741],[-6,-15],[-15,2],[-5,-7],[5,21],[11,-2],[8,7],[2,-6]],[[8857,4720],[-12,-20],[-23,0],[5,24],[6,21],[6,8],[11,6],[5,-1],[7,-11],[-5,-27]],[[8656,4770],[0,-26],[-8,-16],[-7,-6],[3,28],[10,23],[2,-3]],[[8664,4774],[1,-9],[-7,7],[6,2]],[[8166,4787],[3,-6],[-12,-8],[-3,-6],[-12,-1],[-12,5],[4,15],[32,1]],[[8204,4789],[6,-5],[-10,-1],[4,6]],[[8738,4813],[-1,-5],[-6,7],[3,6],[4,-8]],[[8733,4812],[3,-8],[-6,-16],[-7,2],[2,30],[-1,7],[9,-15]],[[7948,4837],[3,4],[13,-9],[8,1],[0,9],[9,-3],[2,-10],[7,-5],[6,2],[5,-8],[8,5],[5,-14],[2,-16],[11,-1],[10,-5],[4,4],[11,-7],[7,4],[5,-7],[7,8],[2,19],[4,5],[7,-1],[3,-15],[12,3],[12,-14],[16,1],[0,-13],[6,-8],[-2,-17],[16,-15],[12,4],[7,6],[13,-11],[-3,-41],[7,-10],[-18,4],[-20,20],[-6,-1],[-10,-8],[-9,6],[-16,4],[-2,-6],[-9,6],[-11,0],[-13,8],[-14,14],[-18,10],[-23,1],[-2,-7],[-18,4],[-11,14],[-25,5],[-4,10],[4,15],[-7,-1],[-7,10],[-20,-2],[3,10],[2,-8],[4,17],[5,1],[1,18],[5,17],[4,-6]],[[8346,4810],[-1,39],[3,-8],[-2,-31]],[[8685,4859],[3,-16],[-4,0],[1,16]],[[8737,4870],[5,-12],[1,-27],[-5,-14],[-8,8],[-1,9],[2,19],[6,17]],[[7843,4868],[-9,8],[9,-3],[0,-5]],[[8386,4889],[2,1],[2,-20],[-3,-2],[-4,10],[3,11]],[[8410,4898],[-4,-6],[0,-18],[-10,-1],[3,23],[-2,8],[11,13],[2,-19]],[[8422,4913],[0,-9],[-5,6],[-2,-24],[7,-6],[-2,-7],[-8,-5],[0,-10],[-6,-1],[-2,9],[5,17],[3,22],[0,15],[4,10],[6,-17]],[[8418,4952],[5,-5],[-3,-8],[-5,6],[3,7]],[[8564,4977],[-2,-8],[-9,-3],[3,10],[8,1]],[[8225,4951],[-3,23],[3,18],[4,5],[1,-36],[-5,-10]],[[8523,5004],[7,-6],[-2,-7],[6,-2],[0,-14],[-15,-15],[-15,15],[-5,14],[1,12],[11,5],[12,-2]],[[8598,5023],[14,-13],[8,1],[7,-8],[1,-15],[7,-11],[-1,-17],[-24,23],[-3,8],[-9,2],[-2,-10],[-15,7],[-2,8],[-6,-10],[-7,-2],[-6,20],[-4,-17],[-6,11],[8,6],[1,12],[21,0],[5,-5],[13,10]],[[7789,5006],[0,-13],[-7,21],[0,8],[6,-7],[1,-9]],[[7994,5036],[13,-12],[-2,-21],[-6,-7],[-3,11],[-8,-10],[0,26],[2,12],[4,1]],[[7782,5024],[-5,-4],[0,20],[5,-16]],[[7769,5060],[4,-12],[-4,1],[-5,11],[5,0]],[[8501,5041],[-3,3],[-3,21],[4,3],[2,-27]],[[8483,5079],[15,1],[11,-2],[-2,-3],[-24,-4],[0,8]],[[8620,5085],[2,-15],[-6,-6],[-14,10],[10,9],[8,2]],[[8458,5089],[22,-6],[0,-9],[-8,-3],[-7,2],[-10,-6],[-1,20],[4,2]],[[8762,5091],[20,-3],[6,-5],[14,-4],[-11,-5],[-15,5],[-14,12]],[[7940,5097],[5,-5],[4,-17],[0,-18],[4,-16],[14,-6],[-5,-8],[-2,-12],[4,-10],[-22,15],[0,21],[-3,4],[-1,14],[-18,4],[0,8],[7,9],[-3,5],[9,9],[2,-13],[3,1],[-2,12],[4,3]],[[8550,5100],[9,-9],[-6,-5],[-11,-3],[-5,6],[1,9],[6,8],[6,-6]],[[8421,5116],[1,-14],[3,9],[6,-1],[0,-10],[-4,-5],[-3,6],[-1,-12],[-3,18],[-6,-15],[-4,10],[3,13],[8,1]],[[8044,5127],[4,-10],[-9,-8],[0,18],[5,0]],[[7746,5129],[7,-31],[4,-7],[-2,-11],[-9,6],[-9,29],[3,13],[6,1]],[[8636,5129],[4,-8],[-2,-16],[-7,6],[-3,15],[8,3]],[[8634,5139],[-7,-9],[-4,6],[11,3]],[[8761,5145],[12,-2],[9,-20],[6,-4],[-7,-7],[-7,2],[-4,22],[-3,-4],[-6,13]],[[8536,5138],[-5,0],[3,9],[2,-9]],[[8915,5033],[0,-218],[-3,-12],[3,-17],[0,-128]],[[8915,4658],[-10,18],[-4,12],[-15,28],[-17,-5],[-3,6],[-7,-8],[-1,19],[5,19],[-4,4],[-7,18],[13,-3],[-12,8],[-4,13],[10,2],[-8,7],[1,5],[-7,13],[-3,32],[-8,7],[0,12],[-4,8],[-15,20],[-21,12],[-18,18],[-14,4],[-7,-1],[-16,20],[1,11],[-4,-6],[-5,9],[-1,-9],[-5,7],[1,8],[-6,-4],[-4,14],[-3,-5],[0,28],[6,6],[-1,9],[-6,-11],[0,-14],[-7,-21],[1,-8],[-5,-11],[-7,-3],[-6,11],[-2,14],[6,8],[-9,15],[-3,12],[-6,8],[-6,-2],[-2,12],[5,5],[10,-2],[4,-6],[9,18],[7,5],[7,-10],[8,7],[4,12],[-1,9],[-7,-8],[-11,2],[-16,-6],[-4,7],[-6,-5],[-8,11],[-4,22],[-5,11],[-9,2],[-5,-3],[-7,4],[3,13],[5,6],[0,18],[7,5],[8,0],[10,17],[8,5],[8,-1],[12,-10],[6,-11],[17,0],[5,-8],[-4,-5],[7,-22],[-1,-12],[-4,-7],[2,-39],[5,-10],[3,-17],[1,17],[5,-3],[1,-23],[5,-17],[6,-6],[11,0],[2,7],[10,16],[1,11],[9,14],[3,18],[9,-2],[14,10],[-3,16],[19,18],[4,0],[11,-13],[9,-4],[5,-10],[7,-3],[20,-21],[10,3],[16,-10],[-2,-6],[8,0]],[[7903,5160],[0,-12],[-8,7],[6,9],[2,-4]],[[8544,5159],[1,-17],[6,0],[-1,-9],[-5,6],[-5,-3],[0,10],[-5,11],[6,9],[3,-7]],[[8533,5168],[1,-14],[-4,-1],[0,14],[3,1]],[[7735,5153],[-4,0],[3,16],[1,-16]],[[7881,5163],[-8,-1],[3,8],[5,-7]],[[8633,5183],[14,-10],[-2,-13],[-6,2],[-11,13],[8,-16],[-6,-1],[-1,8],[-9,2],[-2,9],[15,6]],[[7737,5167],[-5,8],[0,8],[5,-16]],[[7904,5183],[11,-16],[-7,4],[-8,-1],[4,13]],[[7850,5240],[4,0],[7,-11],[-14,-1],[-1,20],[4,-8]],[[7861,5243],[2,-12],[-8,11],[-5,-1],[5,9],[6,-7]],[[7892,5248],[-1,-8],[-5,3],[6,5]],[[7904,5252],[2,-10],[-2,-11],[-3,13],[-6,-3],[2,9],[7,2]],[[7845,5238],[-6,7],[-1,17],[3,2],[5,-9],[-1,-17]],[[7704,5270],[3,-2],[6,-18],[6,-7],[-2,-28],[-4,1],[-3,14],[-5,7],[-8,26],[7,7]],[[7839,5273],[7,-4],[0,-13],[-10,11],[-2,10],[5,-4]],[[8473,5279],[5,-11],[-3,-3],[-6,-26],[-5,-5],[-7,-25],[-24,-11],[-11,3],[-4,10],[-24,0],[-12,-4],[-6,6],[-13,-7],[-11,7],[-10,-4],[-7,-19],[-3,-19],[3,-26],[4,-13],[5,-1],[5,-12],[2,-17],[13,1],[2,12],[8,18],[5,-3],[13,0],[1,9],[15,-2],[7,4],[-7,4],[10,6],[9,-5],[0,-20],[-3,-4],[-4,11],[-9,-3],[-8,-23],[-9,-17],[-12,-6],[-3,-12],[-10,8],[0,-8],[8,-15],[5,-3],[11,-32],[7,-26],[-5,-8],[-1,-14],[13,-17],[-1,-9],[7,-3],[0,-15],[-4,-6],[-4,6],[-14,-7],[-2,-7],[2,-12],[-12,1],[-5,9],[1,25],[3,8],[-8,7],[-13,25],[0,9],[5,10],[1,26],[-8,8],[-17,-20],[6,-16],[0,-25],[-2,-12],[1,-36],[2,-7],[-4,-14],[-1,-14],[5,-24],[-15,-2],[-4,-8],[-11,16],[0,14],[3,7],[0,18],[4,19],[0,23],[-5,19],[2,12],[-6,3],[-10,-8],[-3,14],[2,27],[-4,0],[1,13],[3,-1],[7,11],[-1,15],[3,13],[4,2],[-2,14],[0,26],[5,11],[1,11],[7,11],[1,50],[3,16],[4,4],[-1,10],[9,8],[7,-3],[6,14],[0,15],[3,3],[10,-7],[5,3],[0,-9],[5,-4],[8,2],[8,-5],[7,1],[10,-12],[4,8],[19,-6],[8,1],[10,8],[9,23],[10,19],[2,-4]],[[7825,5301],[0,-16],[-7,-2],[-2,18],[9,0]],[[8556,5309],[-6,-20],[5,-6],[0,-25],[-11,-20],[3,-8],[6,3],[0,8],[7,8],[-3,5],[3,9],[11,11],[4,-1],[-1,-29],[-11,-9],[0,-14],[11,-6],[0,-13],[-20,8],[-3,-10],[1,-20],[5,-25],[10,-24],[-11,11],[-5,20],[-5,6],[1,34],[-4,4],[-2,38],[-3,10],[4,12],[0,12],[4,16],[10,15]],[[8571,5333],[3,-7],[-3,-21],[-8,-7],[-3,16],[5,13],[6,6]],[[7663,5350],[2,-7],[14,-20],[-5,0],[-14,13],[-4,9],[7,5]],[[8268,5370],[-4,6],[4,4],[0,-10]],[[8489,5385],[-4,-3],[0,16],[4,-13]],[[8269,5423],[5,-1]],[[8274,5422],[-2,-7],[-3,8]],[[8008,5418],[2,-16],[-2,-7],[-8,11],[-1,9],[7,11],[2,-8]],[[8265,5422],[-5,1],[11,-21],[-1,-10],[-15,-1],[7,-13],[-5,-10],[11,-13],[-4,-4],[16,-37],[-8,-15],[1,-8],[7,-13],[9,-10],[10,-16],[6,-14],[-7,-9],[-16,4],[-8,12],[4,-17],[-6,2],[-6,-18],[-4,-26],[2,-2],[-3,-17],[1,-14],[4,4],[-3,-14],[4,-4],[-9,-8],[-1,5],[-7,-22],[-14,-16],[1,-8],[-9,-10],[6,1],[-2,-24],[6,0],[-2,-19],[-4,-2],[0,-18],[-5,-7],[-6,-36],[-38,-32],[0,28],[-14,23],[-6,-9],[-9,3],[0,12],[-6,-6],[-9,20],[-3,-10],[3,-3],[-14,-16],[-9,6],[-7,-11],[-4,-1],[1,27],[-4,17],[0,-10],[-4,-4],[-7,5],[-9,-9],[-7,6],[-2,-5],[-3,12],[-7,-8],[-6,62],[-5,8],[3,3],[2,20],[-4,16],[-7,11],[-7,4],[-2,-4],[-7,21],[0,34],[5,-2],[-5,14],[-5,4],[0,20],[3,50],[7,9],[1,14],[9,9]],[[8045,5303],[-3,-16],[3,-12],[17,-35],[7,-8],[8,3],[2,6],[10,4],[7,-6],[9,2],[8,7],[2,18],[8,7],[15,0],[-2,-8],[9,-3],[11,-8],[7,12],[16,-1],[5,12],[1,13],[3,2],[-1,20],[12,14],[-4,12],[1,10],[5,10],[6,-1],[4,65],[5,11],[6,-4],[3,5],[7,-4],[10,4],[13,0],[10,-12]],[[8523,5442],[2,-13],[-3,-14],[-4,-2],[2,32],[3,-3]],[[7652,5506],[11,-6],[4,-11],[10,-6],[12,4],[10,-8],[9,6],[11,-21],[3,-16],[6,-9],[0,-16],[13,-17],[3,-9],[6,-5],[20,-26],[7,-15],[-1,-13],[3,-5],[3,6],[6,-23],[14,-21],[-2,19],[6,1],[8,-16],[1,-14],[10,-6],[12,-18],[1,-19],[7,-15],[13,-3],[5,-14],[-13,-13],[8,1],[12,15],[11,-13],[2,-18],[-7,0],[-6,-21],[7,-4],[-5,-5],[1,-12],[4,-12],[9,-1],[7,-6],[6,2],[2,-16],[1,-28],[4,-14],[7,-5],[-1,-9],[8,-5],[13,-1],[0,-13],[5,-6],[0,-10],[6,-4],[2,-14],[-6,-14],[-1,-15],[3,-5],[-4,-25],[2,-13],[0,-26],[-2,-53],[-7,2],[-7,19],[-3,-6],[0,-12],[-8,6],[-9,11],[-1,-4],[5,-19],[-4,-3],[-3,11],[-10,17],[-5,19],[-7,10],[-11,12],[-28,46],[-1,17],[-17,23],[-8,29],[-9,16],[-5,17],[2,7],[-9,34],[0,8],[-5,3],[1,11],[-9,30],[-9,14],[0,13],[-4,9],[-9,10],[-5,1],[-1,21],[-9,45],[0,20],[-3,0],[-7,14],[-5,2],[-9,14],[-7,6],[-2,27],[-5,5],[-4,14],[-3,5],[-8,23],[-11,6],[-8,21],[-6,5],[-13,28],[-5,27],[-3,6],[0,17],[8,2]],[[4872,8298],[-4,5],[8,13],[4,-7],[-8,-11]],[[7606,5598],[2,-16],[-2,-11],[-5,16],[0,9],[5,2]],[[7571,5804],[0,-12],[-5,0],[-1,12],[6,0]],[[7583,5964],[1,-29],[-3,1],[1,-36],[-3,-2],[1,-13],[-5,-6],[2,-9],[-2,-25],[-5,13],[5,34],[0,29],[2,1],[0,26],[6,16]],[[7448,6428],[-4,1],[4,13],[0,-14]],[[7248,6922],[-16,-24],[0,-12],[-5,-9],[1,-17],[-7,-14],[9,-14],[9,-1],[7,-10],[9,-6],[2,-11],[15,-17],[6,3],[11,-14],[7,2],[1,-11],[12,-4],[18,0],[8,4],[6,-8],[8,-2],[1,-18],[8,-3],[10,-14],[9,7],[7,-16],[4,5],[9,-3],[11,-11],[7,7],[9,-11],[13,6],[7,-5],[4,17],[0,13],[-6,11],[2,24],[3,21]],[[7703,6808],[0,-19],[-13,-15],[0,-11],[7,-21],[-7,6],[-4,10],[-21,-9],[-2,-10],[-14,-19],[-9,-5],[-2,-21],[4,-12],[-4,-6],[0,-10],[-10,-18],[-2,-16],[3,-3],[-2,-22],[-3,-2],[-6,-22],[-5,-27],[-11,9],[-11,-2],[4,-18],[-2,-30],[-9,-21],[2,-34],[-3,1],[-1,-12],[-8,9],[-3,-10]],[[7473,6457],[-4,-11],[5,-18],[-6,2],[-4,-6],[-2,22],[-5,-3],[-1,-16],[-7,0],[-1,26],[-8,-18],[-21,-14],[-8,-19],[6,-28],[-7,-10],[-4,-16],[-4,-3],[-6,-16],[-19,-10],[-5,9],[-5,-13],[5,1],[-15,-26],[-9,-26],[-13,-29],[-9,-8],[-6,-10],[-9,-22],[-21,-21],[-6,-16],[3,-5],[-1,-14],[-6,-9],[-11,-8],[-10,4],[-4,-3],[-1,-20],[-10,-15],[-1,10],[-6,-1],[-9,-10],[-3,-17],[-2,-18],[3,-24],[-1,-30],[3,-29],[-5,-4],[7,-9],[0,-14],[-3,-37],[-8,-24],[-4,-26],[2,-16],[0,-46],[1,-17],[-15,0],[-2,-15],[-8,-21],[-2,-13],[5,-9],[-20,-12],[-5,-12],[-2,-22],[-2,-8],[-16,-16],[-7,6],[-11,22],[-7,19],[-6,25],[-3,32],[4,-10],[0,11],[-6,7],[-2,18],[-6,30],[-1,14],[-9,36],[-9,17],[-6,25],[-6,34],[-2,33],[-8,39],[-1,14],[-7,14],[-2,12],[-4,5],[0,15],[-3,4],[-4,24],[-4,8],[-5,29],[-1,37],[-5,30],[-6,45],[1,7],[-3,22],[-1,23],[-3,24],[2,33],[4,12],[-2,36],[-3,-4],[-3,11],[2,16],[12,11],[-16,-3],[2,14],[-2,14],[9,5],[-13,4],[-2,-15],[-8,-7],[8,-18],[-6,-25],[-17,-17],[-14,-11],[-5,0],[-10,9],[-11,17],[-15,33],[-15,29],[0,10],[7,1],[0,-9],[14,12],[3,-3],[9,7],[7,23],[-10,-1],[-9,-10],[-13,5],[-11,10],[-9,15],[-4,19],[-6,14]],[[6893,6556],[5,7],[10,0],[0,19],[13,-3],[11,2],[5,-7],[6,0],[3,8],[13,7],[0,-8],[6,-3],[9,10],[-4,12],[3,3],[-5,27],[-6,14],[0,17],[-10,1],[-6,14],[2,35],[-9,2],[-10,11],[1,17],[10,20],[6,22],[7,12],[6,1],[4,-16],[4,-2],[9,7],[20,8],[0,9],[8,16],[5,21],[16,16],[9,29],[3,22],[12,8],[4,7],[-2,10],[6,11],[6,19],[10,12],[-4,2],[3,17],[-2,24],[7,10],[14,8],[1,10],[-8,8],[-11,2],[0,14],[-9,2],[0,13],[-9,10],[4,22],[-5,5],[1,10],[7,10],[-9,1],[1,16],[-5,3],[4,19],[13,6],[7,-5],[16,-2],[11,-9],[11,11],[17,3],[3,10],[5,1],[4,11]],[[7140,7205],[20,22]],[[4825,8298],[2,-37],[6,-29],[-6,-16],[-4,-28],[-10,1],[-8,-4],[-12,0],[-5,-10],[-7,0],[-4,-8],[-7,-1],[-12,-14],[-20,0],[-11,-8],[10,14],[-20,-4],[12,13],[-11,-6],[-7,10],[13,14],[-15,-2],[5,10],[13,-2],[-1,11],[8,12],[-10,-5],[12,12],[5,21],[10,8],[-16,-2],[-14,9],[-3,9],[6,13],[0,24],[-5,4],[22,4],[23,-3],[-5,4],[12,9],[3,8],[-15,-1],[-2,7],[10,6],[2,18],[15,2],[6,-6],[4,17],[13,-9],[-9,-9]],[[6560,6732],[-4,-9],[-5,0],[-16,-12],[0,7],[13,7],[13,13],[-1,-6]],[[6357,7396],[3,-38],[4,-9],[9,-7],[13,-2],[9,-5],[2,-13],[21,-24],[23,-9],[43,18],[16,-4],[-3,30]],[[6497,7333],[8,-1],[16,11],[1,13],[9,13],[9,7],[24,0],[3,10],[17,-4],[5,4],[3,-17],[23,-10],[8,-9],[10,3],[11,-10],[10,-21],[13,-7],[8,-22],[23,0],[2,-31],[-3,-8],[4,-5],[0,-15]],[[6689,6902],[14,-27],[0,-8],[6,-21],[10,-20],[14,-8],[5,-10],[5,-1],[-1,-12],[2,-18],[-1,-26],[11,2],[4,-8],[-4,-17],[0,-11],[-12,0],[-12,-7],[-2,-10],[-11,-7],[-7,-59]],[[6710,6634],[-5,-8],[-10,9],[-12,4],[-1,9],[-5,-6],[-24,3],[-2,4],[-12,-4],[-6,10],[-7,2],[-14,-2],[-4,8],[-17,5],[-4,19],[-4,42],[-6,17],[-11,3],[-8,-2],[-5,-8],[-9,-4],[-3,-11],[-6,2],[-13,-17],[-11,5],[-3,7],[-17,0],[-8,16],[-10,6],[-13,16],[-4,16],[-12,11],[-9,-1],[-8,6],[-9,35],[0,12],[-8,13],[2,10],[-6,0],[1,16],[-15,30],[0,10],[-5,6],[-11,-12],[-2,9],[-7,-1],[-9,13],[8,-1],[0,9],[-9,-8],[1,-20],[-11,-4]],[[6347,6908],[-3,15],[-11,14],[0,31],[-9,0],[0,23],[4,21],[-9,22],[-5,19],[-6,-1],[-14,21],[-16,15],[4,5],[-4,15],[-11,15],[-5,22],[3,14],[-4,8],[2,8],[6,-3],[-2,9],[7,21],[7,2],[1,7],[-6,16],[1,10],[6,2],[-4,9],[-6,-3],[-14,14],[-3,21],[-5,0],[-1,18],[-6,5],[2,12],[-3,7]],[[6243,7322],[0,10],[-6,6],[1,17],[-10,17],[6,20],[-4,0],[-3,45],[-5,13],[11,4],[4,19],[7,-7]],[[6347,6908],[-13,5],[-3,-3]],[[6331,6910],[-7,6],[-9,0],[-6,-5],[-8,-33],[-9,-20]],[[6292,6858],[-5,-2],[-46,8],[-62,91],[-11,18],[-47,49],[-34,10]],[[6087,7032],[4,8],[-7,3],[0,11],[-8,51]],[[6076,7105],[4,3],[43,44],[14,11],[7,22],[1,40],[3,8],[-2,23]],[[6146,7256],[0,0]],[[6146,7256],[0,20],[3,10],[13,5],[15,26],[-1,3]],[[6176,7320],[6,2],[6,13],[9,0],[10,-7],[12,-2],[8,4],[1,-18],[11,12],[4,-2]],[[4554,9014],[7,-14],[12,-7],[12,13],[-4,-20],[10,2],[-2,-20],[12,4],[0,-8],[21,-10],[-4,-10],[6,-8],[-13,-25],[-13,-4],[-2,-15],[-24,-8],[-39,-26],[-31,-6],[-1,-11],[-23,-7],[-27,8],[-12,0],[-28,20],[-42,-4],[4,9],[14,4],[10,10],[2,11],[-13,-6],[-9,29],[-32,1],[-11,-4],[-3,8],[23,2],[15,8],[25,-2],[-21,7],[22,16],[-39,7],[-20,-9],[-18,6],[7,8],[12,-7],[-8,15],[17,-5],[-9,12],[10,17],[20,-8],[-5,7],[9,16],[11,-11],[25,-14],[-2,-19],[9,-29],[0,13],[9,15],[9,-10],[5,13],[-5,20],[9,3],[13,-22],[6,-1],[-1,19],[22,6],[16,-26],[-6,27],[10,-1],[10,-11],[12,14],[6,-6],[13,3],[-3,19],[15,2]],[[5993,7068],[-6,-5],[0,-15]],[[5987,7048],[-10,8],[-6,-14],[0,-19],[6,-9],[-7,-11],[-2,-14],[10,1],[5,6]],[[5983,6996],[0,-9]],[[5983,6987],[0,-6]],[[5983,6981],[1,-8]],[[5984,6973],[-8,-34],[0,-21],[-6,-33]],[[5970,6885],[-2,-4]],[[5951,6980],[8,18],[-2,4]],[[5957,7002],[7,21],[6,44],[5,21]],[[5975,7088],[10,0],[1,9],[8,10]],[[5994,7107],[-1,-9],[3,-19],[-3,-11]],[[5434,7386],[-12,-29],[-3,-25],[6,-18],[-6,-11],[1,-8],[-10,1],[-8,6],[-3,10],[-7,8],[-7,-1],[-25,27],[-10,1],[-4,6],[0,19],[7,6],[6,-6],[4,10],[7,1],[10,-13],[9,4],[9,-2],[17,10],[4,-4],[12,11],[3,-3]],[[5256,7557],[8,-6],[8,-34],[-5,-14],[3,-13],[-2,-30],[-6,-24],[-10,6],[-5,-19],[-8,0],[-7,17],[5,39],[-4,1],[2,23],[-5,17],[-4,0],[2,16],[8,-2],[9,6],[11,17]],[[5380,7862],[-9,-16],[7,-7],[-4,-8],[3,-12],[8,-10],[-5,-1]],[[5380,7808],[1,7],[-18,1],[-3,-5],[-16,-12],[-4,2],[-1,-16],[9,-13],[-6,-7],[-2,-13],[2,-18],[8,-16],[9,-7],[19,-21],[12,-54],[18,-28],[12,-11],[25,0],[4,-9],[-8,-15],[19,-17],[13,-7],[14,-18],[13,-8],[0,-6],[12,-15],[2,-10],[-4,-18],[-9,6],[-5,23],[-11,0],[-14,11],[-11,-25],[-2,-21],[9,-5],[9,-11],[-1,-29],[-11,-1],[-5,-8],[1,-18],[-8,-10],[-8,-20],[-10,4],[0,15],[5,3],[3,12],[-3,8],[9,5],[2,12],[-4,8],[-2,21],[-4,6],[-2,20],[-7,11],[-5,-5],[-12,13],[2,8],[-6,18],[-8,1],[-5,8],[-7,3],[-10,22],[-10,1],[-8,-3],[-5,11],[-7,2],[-12,24],[-10,10],[-8,18],[-10,5],[-3,12],[-9,9],[1,6],[-8,2],[1,18],[-7,17],[0,14],[-5,13],[-7,1],[-16,17],[-15,5],[-14,-19],[-3,-11],[-17,-6]],[[5344,7711],[0,0]],[[5345,7596],[0,0]],[[2849,6246],[15,-3],[3,-8],[12,-7],[4,-14],[-9,-3],[-10,6],[-1,-7],[-6,3],[-1,-11],[-7,10],[-8,-1],[-7,10],[-3,10],[-8,2],[5,12],[10,5],[11,-4]],[[6087,7032],[-4,-6],[-57,-30],[15,-28],[13,-29],[-9,-10],[-4,-18],[-21,-8],[-7,-22],[-12,-17],[-31,9]],[[5970,6873],[0,12]],[[5984,6973],[-1,8]],[[5983,6987],[4,0],[0,25]],[[5987,7012],[0,36]],[[5993,7068],[7,-5],[10,-16],[12,-3],[54,61]],[[8563,6721],[-5,-10],[-7,-5],[-4,-21],[0,20],[7,8],[-3,7],[7,-1],[4,12],[1,-10]],[[8603,6820],[-13,-15],[0,9],[11,11],[2,-5]],[[8624,6937],[5,-5],[-7,-8],[2,13]],[[8639,6942],[-5,-5],[6,22],[-1,-17]],[[8616,7056],[0,-12],[-6,-7],[1,18],[5,1]],[[8578,7069],[-1,-10],[-6,2],[7,8]],[[8638,7135],[3,-16],[7,-3],[9,6],[1,-15],[-5,-9],[10,1],[0,-17],[5,-2],[-11,-22],[-6,-38],[0,-16],[-3,-14],[-7,5],[1,-11],[-12,-13],[2,20],[-5,12],[-2,-4],[0,-22],[-9,5],[4,18],[-5,12],[1,21],[2,-2],[8,19],[-2,11],[3,12],[-5,15],[-8,2],[7,-19],[-6,-11],[1,11],[-10,-10],[-6,18],[1,10],[4,-14],[5,-1],[-1,10],[-11,11],[1,10],[6,-2],[18,22],[2,9],[6,4],[7,-3]],[[8726,7162],[8,-9],[5,1],[-1,-13],[4,-10],[-10,-11],[-5,-23],[-8,15],[-5,2],[-13,-11],[0,-7],[-7,-11],[-1,-16],[-10,0],[3,9],[-6,1],[-6,31],[11,14],[2,17],[6,6],[5,-10],[10,2],[3,14],[8,9],[7,0]],[[8747,7160],[-3,-8],[-3,8],[8,15],[-2,-15]],[[8595,7181],[-2,-23],[-3,4],[1,16],[4,3]],[[8845,7375],[1,-10],[-6,-6],[-1,17],[8,13],[-2,-14]],[[8923,7564],[5,3],[-1,-34],[2,-14],[8,-11],[5,-22],[4,-26],[-5,-14],[0,-12],[-7,-6],[-5,-25],[1,-17],[-6,9],[-7,-6],[-3,-24],[3,-14],[-2,-39],[-5,-8],[-5,-19],[-1,-20],[8,-27],[-11,-7],[-2,-21],[-16,-17],[2,30],[5,11],[-8,0],[-4,-12],[1,-16],[-7,11],[-8,-5],[0,-21],[-9,-16],[-1,25],[-6,4],[-6,-11],[-4,-18],[-17,5],[-15,-6],[7,9],[-13,1],[0,16],[-5,-3],[-3,-22],[9,-9],[1,-10],[-7,3],[-10,-9],[0,-10],[-6,-8],[-3,-15],[-5,-7],[-10,5],[-1,8],[-9,11],[3,8],[-3,14],[10,17],[-2,9],[-11,-4],[-6,7],[-7,0],[-20,-18],[-10,1],[-3,-9],[-6,2],[-15,-9],[-1,9],[-8,-6],[-2,-24],[-11,13],[-16,-7],[-4,7],[-3,-8],[-1,25],[3,5],[12,-1],[3,10],[7,5],[17,28],[7,7],[-1,9],[17,8],[5,-8],[24,6],[7,7],[11,-2],[8,7],[-1,-12],[13,-4],[12,10],[-3,18],[5,16],[7,8],[10,28],[-1,26],[11,10],[6,1],[-3,-13],[-9,-5],[4,-6],[-2,-13],[10,-6],[3,10],[21,13],[10,12],[10,29],[14,15],[1,16],[9,23],[3,24],[4,10],[1,17],[-4,11],[-5,-3],[7,19],[1,11],[-5,13],[5,10],[7,3],[1,26],[9,-5],[3,-20],[3,9],[8,-6],[3,19],[-13,-5],[3,23],[10,-10]],[[8944,7799],[15,-24],[4,-13],[19,-27],[11,-7],[0,-6],[12,0],[3,-7],[13,-4],[15,25],[1,-8],[-7,-17],[-1,-9],[8,-28],[8,6],[-4,-12],[-6,0],[-8,-10],[-27,-4],[-11,-14],[-8,-20],[-3,-23],[-8,11],[-14,9],[-8,11],[-12,9],[-8,-3],[-12,-15],[-9,15],[-5,0],[-6,-18],[12,-8],[13,-20],[-13,-1],[-8,-7],[-6,-13],[-7,10],[5,14],[-3,17],[-7,6],[3,26],[12,7],[5,11],[-5,13],[6,8],[8,-9],[10,-3],[7,10],[-3,22],[9,14],[0,22],[3,6],[1,20],[-6,23],[3,12],[9,3]],[[6762,7807],[-15,8],[-3,11],[1,13],[12,14],[11,-3],[7,-11],[1,-13],[-4,-11],[-10,-8]],[[7140,7205],[-9,31]],[[6651,7782],[-20,19]],[[6631,7801],[12,18],[8,-37]],[[7227,7611],[-6,13],[-15,4],[-12,17],[-14,6],[-14,0],[-19,2],[-14,5],[-13,-5],[-16,1],[-3,-6],[-13,2],[-12,8],[-12,13],[-21,-10],[-5,-27],[3,-9],[-22,14],[-27,9],[-10,-1],[-10,-13],[-5,-15],[3,-3]],[[6970,7616],[-6,-3],[-4,-11],[-4,5],[-9,-16],[-20,-15],[0,-5],[-10,-5],[0,-10],[-13,-17],[1,-19],[-4,0],[-13,13],[4,14],[-5,7],[-33,-3],[-5,20],[-2,30],[-14,0],[2,57],[-8,-7],[-8,26],[-7,5],[-10,19],[-12,-10],[-37,4],[-32,-8],[-23,38],[-2,12],[-28,28]],[[6668,7765],[0,34],[-2,9],[-7,-1],[3,20],[17,-5],[8,16],[12,7],[2,14],[-11,2],[-3,9],[-13,3],[-8,-7],[4,-13],[17,0],[2,-11],[-4,-6],[-24,2],[-2,12],[-7,0],[7,-14],[-3,-17],[-8,-6],[-4,5],[4,13],[-15,-3],[-6,-23]],[[6627,7805],[-73,-31],[0,-212]],[[6554,7562],[-14,-3],[-15,32],[0,6],[-20,23],[-20,-3],[-14,-9],[-15,-21]],[[6456,7587],[-1,20],[6,15],[3,22],[-15,9],[-8,-3],[-6,18],[-12,0],[1,23],[-4,4],[-8,33],[-17,9],[1,17],[16,-1],[4,-6],[16,-2],[-17,20],[12,28],[9,5],[22,0],[11,-6],[10,2],[-15,10],[0,6],[9,18],[4,40],[-8,19],[-13,2],[-10,-10],[-16,14],[-9,3],[-12,-11],[-9,-2],[-18,-21],[-13,2],[-2,-14]],[[6367,7850],[-9,9],[-10,5],[0,12],[6,-6],[7,6],[-9,19],[-4,15],[-14,23],[-11,0],[-7,5],[-1,-9],[-7,7],[0,26],[-18,8],[8,30],[8,10],[-7,14],[3,28],[12,12],[-1,14],[9,9],[22,-37],[13,11],[-5,20],[0,13],[20,17],[0,15],[11,0],[15,12],[6,17],[5,6],[14,-3],[1,-11],[11,-1],[6,12],[11,6],[5,-16],[23,0],[9,-7],[1,-9],[7,-1],[6,-13],[10,-7],[-3,-16],[8,2],[1,24],[10,-13],[16,-15],[13,11],[11,20],[18,0],[5,-11],[11,1],[1,13],[22,-4],[0,-11],[10,-11],[16,-3],[1,-9],[7,4],[5,18],[9,-10],[15,-1],[17,10],[2,19],[4,6],[-7,11],[-10,1],[-3,8],[-16,3],[3,8],[-12,4],[11,15],[7,1],[10,11],[-10,23],[22,16],[17,-3],[1,7],[-13,9],[-14,3],[2,12],[-6,8],[5,11],[-6,3],[12,10],[4,-6],[43,7],[25,14],[25,5],[9,-4],[-1,10],[7,7],[15,-1],[15,6],[33,8],[13,6],[2,13],[10,0],[2,9],[8,-4],[-1,9],[8,-6],[13,0],[14,-11],[8,9],[14,-12],[1,-18],[6,-3],[-1,-23],[-6,0],[6,-13],[3,6],[11,-4],[10,5],[3,9],[9,-14],[-3,-13],[9,3],[-4,10],[11,-1],[3,-8],[11,-2],[8,7],[-3,-12],[-6,1],[-6,-17],[6,-8],[13,12],[14,-10],[1,12],[9,9],[7,-2],[12,11],[-2,4],[31,15],[12,8],[-7,-19],[-8,1],[3,-9],[34,-36],[7,-11],[42,-97],[12,-38],[15,7],[-1,14],[6,6],[15,-7],[-3,-15],[9,2],[2,-13],[11,3],[6,-4],[17,5],[18,12],[13,-7],[11,-20],[0,-15],[23,-14],[-2,-7],[9,-19],[19,-1],[6,-7],[12,20],[0,-10],[12,-22],[7,-9]],[[6163,5412],[-17,-50],[-9,-17],[0,-175],[1,-39],[15,-39],[0,-7]],[[6153,5085],[-6,-15],[-9,-4],[-4,-20],[-5,-9],[-5,0],[-9,-13],[2,-12],[-3,-18],[-6,-12],[-3,-25],[-4,-11],[-7,-30],[-6,-3]],[[6088,4913],[-21,33],[-19,27],[-5,13],[4,6],[-1,14],[-100,116]],[[5946,5122],[3,12],[-4,7],[0,10],[4,7],[9,-1],[-2,6],[11,4],[-4,11],[-10,-6],[2,-6],[-9,7],[-3,12],[1,12]],[[5944,5197],[4,21],[7,12],[2,15],[9,9],[2,18],[3,6],[0,26],[-3,18],[2,3],[-14,40],[-2,17],[2,13],[-8,5],[-3,24],[-2,2]],[[5943,5426],[11,23],[15,14],[14,9],[4,-7],[2,-16],[8,0]],[[7045,7454],[-13,-5],[-15,2],[-9,-5],[-2,-6],[-5,10],[-7,-7],[-2,12],[-8,8],[-12,-11],[-8,-1],[-4,11],[-36,-5],[-2,14],[7,20],[14,6],[18,-12],[1,7],[8,8]],[[6970,7500],[12,3],[11,-7],[9,15],[8,-3],[0,14],[7,-6],[4,9],[10,8],[-13,3],[-5,9],[-9,-1],[0,10],[-8,0],[-6,22],[-1,-10],[-6,-2],[0,-13],[-6,-1],[-12,7],[-4,14],[-4,-4],[-9,10],[8,7],[22,29],[-8,3]],[[6976,7489],[-6,4],[2,-14],[4,10]],[[6993,7480],[0,0]],[[6961,7477],[0,0]],[[7901,5783],[-6,7],[-11,2],[-7,-4],[-3,5],[5,13],[0,15],[-4,5],[-3,-16],[-9,2],[-2,38],[-3,3]],[[7858,5853],[0,7],[-6,22],[0,22],[-6,7],[0,21],[-3,7],[-2,25],[6,0],[10,26],[1,11],[9,8],[12,5],[9,-5],[5,3],[11,-2],[5,4],[6,-3],[2,-10],[4,8]],[[7921,6009],[3,-14],[13,-1],[3,-9],[6,-1],[2,7],[-6,19],[7,7],[6,-2],[3,6],[8,-14],[4,0],[8,11],[5,2],[2,10]],[[7985,6030],[0,-14],[-3,-2],[-2,-19],[3,-10],[0,-10],[5,-22],[-5,-20],[4,-24],[-2,-15],[-2,-6],[-4,5],[-8,-14],[-8,-7],[-8,-1],[0,-17],[-11,7],[-4,-13],[-1,-15],[9,-13],[1,-17],[-9,3],[-3,10],[-10,-2],[-3,-7],[-7,6],[1,-11],[-6,-13],[-9,0],[-2,-6]],[[627,5299],[5,-18],[-8,8],[3,10]],[[8522,7115],[1,-14],[-17,-6],[-2,8],[5,8],[13,4]],[[8508,7172],[1,-8],[-7,2],[6,6]],[[8575,7196],[-1,-14],[-5,11],[6,3]],[[8518,7361],[8,22],[5,6],[27,0],[7,17]],[[8565,7406],[7,-27],[14,-31],[6,-25],[4,-25],[-2,-7],[-1,-33],[4,-6],[-2,-25],[-9,-23],[-18,0],[-1,-15],[-3,6],[-17,1],[-2,-20],[-4,14],[0,-13],[-5,-9],[-3,13],[-6,-5],[-3,-11],[-4,3],[-4,-10],[-2,15],[-7,2],[0,9],[6,-7],[2,11],[-4,1],[-2,18],[2,17],[6,9],[-4,4],[8,7],[-7,10],[5,1],[-5,11],[-1,31],[-3,8],[3,12],[7,-1],[-6,42],[4,3]],[[5598,7616],[-9,-9],[-3,6],[-10,-8],[0,-11],[-5,0]],[[5557,7633],[8,15]],[[5565,7648],[9,17],[-2,6],[14,-7],[8,-19],[10,-5],[-6,-24]],[[6338,6909],[5,-15],[-4,-7],[-5,12],[4,10]],[[6345,6826],[-22,0],[-6,27],[-25,5]],[[6331,6910],[7,-26],[-6,2],[-7,-12],[10,-1],[2,-19],[8,-28]],[[7836,6473],[2,-9],[8,-12],[6,-22],[2,9],[5,-5],[0,-9],[-2,-23],[7,-19],[15,-11],[2,8],[9,10],[5,-4],[9,-13],[-1,-9],[-6,-3],[9,-6],[0,-8],[7,-2],[0,-11],[-2,-10],[-9,-12],[-8,6],[-4,-15],[-6,-7],[18,-21],[4,-8],[9,-5],[5,-6],[-2,-12],[6,-14],[5,0],[7,-30],[13,-24],[9,-17],[0,-18],[4,-11],[5,5],[4,-14],[8,-12],[4,-1],[-1,-8],[-6,-5],[2,-12],[7,-8],[5,-12],[-5,-33]],[[7921,6009],[9,11],[0,20],[1,5],[-3,11],[3,6],[2,24],[-5,5],[0,13],[-11,7],[0,8],[-8,15],[0,29],[2,20],[-3,9],[-7,7],[-6,14],[-7,24],[-18,8],[-2,-10],[-9,-15],[-9,-6],[-16,16],[-4,-9],[-19,-26],[-4,-7],[-5,6],[3,19],[4,9],[0,17],[-3,3],[5,14],[0,15],[3,7],[-3,6],[-1,19],[2,7],[-12,2],[-2,-7],[-7,0],[-3,9],[3,29],[-5,15],[-6,-5]],[[7780,6353],[0,15],[7,14],[4,-1],[0,13],[6,16],[3,0],[9,14]],[[5975,7088],[14,52],[1,19],[9,12],[0,7]],[[5999,7178],[13,-3],[4,-23],[-9,-14],[2,-8],[-6,2],[-6,-12],[3,-5],[-6,-8]],[[4790,5433],[-19,13],[-21,22],[-9,12],[-21,40],[-9,19],[-12,7],[-1,10],[-14,13],[-3,12]],[[4681,5581],[3,14],[6,12],[15,23],[0,16],[8,8],[1,17]],[[5693,6449],[0,-115],[-27,0],[0,-28]],[[5666,6306],[-66,66],[-3,4],[-45,45],[-34,36],[-45,45],[-30,31],[-27,-26]],[[5416,6507],[-22,-22],[-20,33],[-42,19]],[[5264,6924],[10,7],[11,30],[-5,31],[6,17],[5,1],[10,22],[19,18],[-2,10],[1,34]],[[5319,7094],[10,-6],[12,-14],[15,-2],[14,6],[6,-6],[17,-5],[8,-12],[20,-6],[5,-13],[0,-14],[7,-25],[4,-7],[17,-9],[10,0],[18,-8],[23,-18],[3,-7],[18,-22],[8,0],[14,14],[10,24],[1,18],[-6,24],[0,16],[3,12],[15,24],[14,13],[10,1],[5,7],[21,-3],[21,-14],[-1,-18],[6,-6],[19,-7],[2,-5],[25,-2],[5,-18]],[[3307,5973],[-4,11],[5,10],[-1,-21]],[[7235,5735],[7,-13],[17,-49],[5,-36],[5,-8],[4,-24],[0,-20],[-2,-22],[-12,-22],[-22,-17],[-9,5],[-4,7],[-7,43],[-1,50],[1,40],[2,10],[0,17],[6,17],[-2,7],[4,10],[6,1],[-14,10],[2,7],[7,-3],[7,-10]],[[5798,3530],[6,-12],[10,-10],[3,-14],[-4,-17],[-5,-7],[1,-10],[-8,-9],[-13,-4],[-5,-7],[-4,-22],[-8,2],[-16,35],[-5,22],[8,6],[12,35],[8,2],[4,10],[13,8],[3,-8]],[[5582,8366],[-1,0]],[[5581,8366],[1,0]],[[5652,8289],[0,9],[-14,16],[-6,-1]],[[5632,8313],[-3,6],[5,24],[-8,11],[-15,1],[-21,9]],[[5590,8364],[-6,32],[0,16]],[[5584,8412],[8,9],[22,11],[15,-4],[8,3],[29,-5],[4,-4],[22,8],[5,-12],[15,-2],[26,-28]],[[5759,8496],[14,-14],[-6,-26],[14,-17],[0,-23]],[[5584,8412],[-2,19],[2,24],[10,12],[0,15],[8,15],[22,11],[18,-21],[4,-17],[12,-7],[19,15],[-2,37]],[[3249,6221],[-2,2]],[[3247,6223],[2,-2]],[[4851,7247],[2,-14],[14,-21],[11,-5],[19,8],[6,-5],[15,7]],[[4919,7214],[2,-9],[17,-2]],[[4758,6776],[-3,0],[1,-30],[-18,-3],[-7,-11],[-16,-2],[-9,7],[-10,1],[-13,-7],[2,-15],[-4,-6],[-8,-25],[-8,-3],[-4,-23],[-3,-30],[-3,-13],[-6,-12],[-12,-16],[-6,-22],[-16,-16],[-4,-13],[-6,-53],[0,-16],[-12,-26],[1,-7],[-4,-14],[-11,-4],[-22,4],[-18,-1],[-12,-4]],[[4527,6416],[1,21],[4,20],[10,13],[4,26],[5,11],[-2,5],[13,42],[-4,0],[8,12],[11,26],[5,4],[5,17],[0,22],[10,45],[0,9],[9,16],[7,4],[10,14],[10,53],[7,16],[24,8],[16,14],[11,23],[15,15],[21,49],[5,19],[1,14],[-7,13],[0,26],[2,26],[3,11],[9,18],[3,24],[-1,7],[11,17],[10,23],[26,19],[21,25],[15,48],[2,15],[9,39],[14,7]],[[5206,7702],[-2,-1]],[[5783,7801],[-3,21],[1,26],[3,22],[-4,18],[-6,5],[-17,36],[-10,30],[-8,3]],[[5739,7962],[20,10],[14,-2],[6,-9],[21,-8],[10,-13],[-1,-25],[7,-10],[5,2],[0,-20],[10,-9],[-1,-16],[6,-9],[-15,0],[-3,6],[-7,-6],[-1,9],[-7,-4],[1,-26],[-13,-19],[0,-11],[-8,-1]],[[6384,4200],[0,8],[5,14],[-5,-22]],[[6370,4487],[-2,-11],[7,-4],[1,-18],[7,-8],[4,-13],[-1,-9],[5,-25],[3,-37],[0,-29],[8,-27],[-4,-34],[-3,-9],[-6,7],[-3,25],[-8,-7],[3,-23],[-2,-5],[5,-11],[-1,-25],[-5,-13],[-6,-24],[2,-29],[-4,-39],[-3,-11],[-10,-59],[-2,-19],[-7,-32],[-3,-29],[-10,-57],[-4,-16],[-2,-24],[-7,-48],[-1,-16],[-4,-13],[-8,-47],[-14,-15],[-11,-2],[-13,-11],[-6,-9],[-12,-2],[-11,17],[-10,2],[-10,15],[-2,20],[-7,14],[-1,45],[3,10],[-4,6],[-1,16],[-6,12],[-4,36],[3,27],[4,6],[0,17],[7,4],[11,46],[4,7],[6,29],[-3,4],[2,24],[-6,18],[1,16],[-6,22],[-1,35],[-3,15],[15,49],[0,30],[12,-1],[11,16],[10,-2],[0,7],[8,4],[4,-6],[1,9],[6,5],[18,25],[3,-7],[-3,-10],[7,2],[-4,18],[4,5],[2,12],[6,8],[-3,-22],[11,28],[-3,11],[3,11],[4,-2],[3,11],[-4,9],[0,19],[7,-1],[1,-10],[4,-1],[0,14],[5,1],[-1,9],[6,-4],[3,5],[1,16],[3,8],[-2,22],[3,13],[5,4],[3,18],[2,-8]],[[2590,6367],[-7,-17],[2,17],[5,0]],[[1889,6595],[7,-4],[1,-9],[-8,13]],[[1800,6801],[-5,-1],[5,12],[0,-11]],[[1880,6866],[3,-12],[-3,-16],[-7,7],[2,17],[5,4]],[[1847,6884],[4,-14],[5,-1],[2,-17],[-11,17],[-3,9],[3,6]],[[2186,6889],[0,-8],[7,-2]],[[2193,6879],[11,-20],[1,-12],[9,-31],[6,-12],[9,-27],[7,-6],[-1,-15],[2,-15]],[[2237,6741],[3,-16],[3,2],[2,-14]],[[2245,6713],[2,-9],[20,-12],[4,-8],[16,-2],[9,-10],[5,6]],[[2301,6678],[0,-14],[-8,-31],[-6,-38],[-2,-30],[-1,-43],[1,-16],[-4,-22],[3,-29],[5,-34],[15,-57],[9,-17],[9,-27],[3,-25],[5,-5],[1,-9],[7,-19],[7,-4],[11,2],[5,-9],[6,-2],[8,-21],[10,3],[16,11],[17,3],[15,13],[10,2],[6,-12],[10,-3],[6,17],[-5,8],[14,16],[5,11],[1,21],[7,14],[-1,6],[1,39],[3,15],[16,17],[19,4],[17,12],[14,2],[20,-9],[6,9],[6,-10],[2,-17],[-3,-16],[-9,-18],[-7,-19],[-1,-19],[-8,-16],[9,-8],[-6,-40],[-3,-10],[-2,-23],[-3,14],[-4,3],[2,18],[-5,-4],[-3,-15]],[[2437,6020],[-20,42],[-19,33],[-11,16],[-10,10],[-1,-6],[-8,1],[-4,13],[-5,-9],[9,-4],[-11,-1],[-8,-12],[-15,-9],[-7,-8],[-8,-2],[-15,10],[-4,6],[-17,3],[-8,13],[-13,6],[-6,14],[-5,0],[-15,8],[-5,0],[-5,9],[-31,22],[-6,11],[-13,14],[-4,13],[-7,6],[-5,-4],[-32,20],[-8,21],[-9,14],[-12,13],[-15,12],[-3,14],[-5,6],[-8,22],[0,10],[-4,8],[3,8],[10,6],[-7,15],[7,12],[1,22],[-6,8],[-7,23],[-2,32],[-9,17],[-15,34],[-12,32],[-21,28],[7,-7],[0,9],[-5,-1],[-9,13],[-6,18],[7,0],[-22,24],[0,5],[-9,-3],[6,9],[-7,-1],[-8,9],[0,14],[4,9],[0,19],[-4,9],[-10,3],[-5,23],[-9,2],[-7,13],[-2,26],[2,3],[-14,4],[-8,12],[-5,13],[-5,5],[-13,29],[-2,20],[-5,2],[1,9],[-11,23],[0,16],[-10,36],[3,20],[-16,10],[-1,10],[-7,6],[-9,-6],[-10,15],[-8,2],[0,-41],[4,-8],[3,-27],[-1,-19],[7,-21],[4,-1],[17,-27],[3,-23],[7,-3],[11,-32],[3,-25],[4,-12],[8,-6],[4,-20],[6,-7],[-1,-6],[8,-25],[-3,20],[8,-10],[0,-9],[5,-13],[1,-29],[9,-25],[10,-36],[-2,-15],[3,-15],[8,-8],[0,13],[14,-16],[4,-23],[7,-10],[0,-14],[-11,-19],[-7,0],[-6,36],[-8,9],[-12,22],[-14,16],[-5,14],[-4,-3],[-4,14],[-3,-1],[-2,25],[3,3],[0,27],[-9,30],[-3,0],[-17,21],[-1,21],[-4,-13],[-10,-1],[-5,13],[-8,9],[-10,6],[0,9],[-16,20],[-1,8],[15,-5],[7,6],[5,-13],[-1,17],[2,28],[-9,26],[-4,3],[-12,26],[-6,2],[-14,19],[-4,12],[0,19],[-5,4],[-1,26],[-7,9],[0,11],[-10,22],[1,15],[-8,14],[-6,28]],[[1746,7056],[66,10],[-1,-12],[46,-30],[58,-37],[79,0],[0,26],[46,0],[11,-20],[8,-8],[14,-26],[6,-4],[7,-12],[6,-21],[-1,-10],[5,-21],[14,-20],[25,-19],[8,14],[4,30],[8,2],[3,6],[5,-5],[20,-2],[3,-8]],[[2290,6649],[-4,-5],[0,-32],[-2,-53],[6,67],[4,13],[-4,10]],[[5582,7536],[0,0]],[[5586,7536],[-4,1]],[[5581,7537],[0,0]],[[5575,7539],[-2,10]],[[5598,7616],[20,7],[2,-4]],[[5117,6285],[0,-124],[-1,-33],[-4,-7],[-4,-29],[-11,-17],[0,-8],[-14,4],[0,-5],[-47,-3],[-9,-17],[-9,-3],[-13,3],[1,-5]],[[4683,5897],[-1,36],[-6,21],[-5,-5],[-8,23],[4,5],[-2,28],[-5,6],[1,18],[-2,5]],[[4659,6034],[5,-2],[7,8],[0,24],[3,11],[6,7],[14,-22],[3,-2],[4,13],[12,1],[14,-4],[13,7],[65,0],[41,0],[5,45],[-8,15],[-1,33],[-2,21],[-1,36],[-2,22],[-6,109],[0,17],[-3,39],[-6,104],[0,14],[-3,39],[0,16],[-3,37],[50,0]],[[7737,5862],[0,-11],[-4,-2],[-1,13],[5,0]],[[7733,5907],[-2,-14],[-1,20],[3,-6]],[[7622,6095],[-2,9],[7,13],[2,-6],[-7,-16]],[[7710,6117],[-4,12],[2,5],[2,-17]],[[7602,6269],[-2,-10],[-5,9],[7,1]],[[7604,6305],[6,-6],[-6,-6],[-3,10],[3,2]],[[7780,6353],[-9,6],[0,-6],[-10,2],[3,-11],[-6,-6],[-8,1],[-1,-17],[-21,-7],[-6,8],[0,-9],[-5,-4],[-2,-10],[1,-18],[-4,-10],[3,-19],[-10,-8],[5,-6],[5,-22],[-2,-10],[11,-23],[4,-17],[7,-8],[-1,-11],[6,-28],[6,5],[-2,-15],[-7,-3],[0,-40],[-9,-4],[-2,-12],[2,-16],[6,-13],[3,-15],[11,-14],[4,-11],[3,-67],[6,-9],[1,-25],[2,1],[3,-19],[-6,-12],[-1,-12],[-5,-17],[-6,-8],[0,-8],[-5,-4],[-2,-23]],[[7742,5779],[-7,-20],[0,24],[-1,18],[7,10],[1,45],[-5,2],[4,20],[-6,11],[5,21],[-3,32],[-9,31],[-4,-1],[0,27],[-3,9],[-5,30],[0,32],[-2,26],[-4,14],[2,25],[-8,-2],[-5,13],[0,18],[-3,12],[-6,8],[0,-23],[-2,-16],[-5,-11],[-11,3],[2,-12],[-16,-8],[-2,-16],[-7,-13],[-9,8],[-6,-4],[0,12],[-5,-9],[-3,5],[3,21],[-12,-19],[-1,11],[4,22],[2,38],[4,9],[0,22],[-2,3],[-2,30],[-6,24],[-5,8],[0,20],[-2,-4],[-1,-16],[-7,9],[-6,22],[9,-10],[6,14],[-11,14],[3,13],[-4,-3],[-6,11],[-10,-1],[2,16],[-4,-12],[-5,6],[5,4],[-5,9],[0,-11],[-7,22],[-3,3],[-3,21]],[[5533,7690],[8,-17],[11,-8],[13,-12],[0,-5]],[[5538,7620],[0,-3]],[[5537,7617],[-6,0],[7,-10]],[[5537,7593],[-14,24],[-10,8]],[[8263,7933],[2,-6],[9,9],[-4,10]],[[7439,8014],[9,6],[1,10],[19,0],[8,3],[15,13],[-2,11],[25,18],[5,0],[8,12],[11,0],[12,16],[9,-2],[7,10],[7,-10],[9,6],[2,-10],[33,-2],[3,-22],[8,-10],[8,1],[15,-8],[9,7],[21,-9],[11,2],[9,-10],[7,11],[15,6],[5,15],[2,14],[-8,6],[-6,22],[7,27],[5,0],[3,14],[8,4],[7,20],[11,-11],[11,-3],[9,-10],[14,0],[23,-15],[7,1],[17,-9],[2,-43],[17,-15],[11,-7],[20,-3],[13,10],[19,4],[4,6],[21,-6],[4,-6],[13,3],[14,-20],[22,-3],[-1,-15],[17,-20],[16,1],[31,-10],[3,4],[9,-6],[20,14],[18,1],[11,8],[10,-2],[8,5],[3,12],[27,27],[17,-1],[17,-20],[9,-1],[12,8],[12,-5],[3,-6]],[[5913,3637],[-22,0]],[[5891,3637],[1,15],[-3,17],[1,16],[-3,3]],[[5887,3688],[1,16],[0,71],[-4,30],[-3,5],[-6,24],[1,14],[-7,44]],[[5869,3892],[31,64],[-2,10],[4,10],[-1,17],[6,7],[9,29],[1,14],[-6,6],[1,36],[-5,2],[0,11],[6,3],[-1,14],[4,4],[-2,36],[3,14],[-1,17],[-5,22],[4,14],[-7,-1],[-1,6],[-13,9],[-9,1],[-5,12],[-5,1],[-7,10],[-9,-2],[-2,4],[-13,-1],[0,21]],[[5844,4282],[-1,18],[-4,20],[19,14],[14,6],[19,16],[4,1],[27,19]],[[5922,4376],[6,-21],[7,-13],[1,6],[17,6],[5,-11],[2,-41],[-5,-11],[0,-9],[-5,-10],[5,-13],[1,-14],[9,-15],[5,-13],[5,-4],[0,-17],[5,0],[-2,38],[4,19],[9,2],[3,5],[1,35],[-1,16],[3,15],[-2,14],[-21,54],[-6,11]],[[5968,4405],[-2,10],[-1,28],[2,8],[-4,14],[0,16],[6,10],[2,25]],[[5971,4516],[19,0],[5,10],[9,-10],[1,-7],[15,1],[7,6],[12,-8],[11,10],[1,13],[7,4],[11,-8],[11,13],[11,0],[5,9],[9,4],[18,27]],[[6123,4580],[6,-13],[-7,-32],[0,-23],[3,-18],[0,-28],[3,-20],[-6,-8],[5,-1],[-2,-39],[4,-23],[-4,-8],[6,-2],[-3,-8],[6,-5],[0,-22],[-5,-7],[1,-8],[-3,-24],[-13,-26],[-3,-14],[-7,-7],[3,-7],[-21,-26],[-1,-7],[-11,-2],[-16,-16],[-6,-3],[-20,-22],[-11,-32],[-8,-15],[-2,-13],[-5,5],[1,-12],[-4,6],[-13,-18],[-6,-17],[-16,-26],[-3,4],[0,-25],[-3,-12],[6,-15],[3,0],[4,-39],[4,-16],[2,-20],[-1,-24],[5,16],[2,-16],[-2,-10],[3,-20],[-7,-50],[6,-4],[-3,-17],[-9,-26],[-13,-11],[-26,-17],[-11,-10],[-12,-16],[-5,-18],[-4,-6],[3,-12],[7,-5],[-1,-33]],[[4659,6034],[-6,12],[-12,16],[-1,13],[-8,8],[-2,17],[-5,13],[-10,-2],[-6,16],[-8,14],[-16,0],[-20,-9],[-19,1],[-1,-15],[-3,-3],[-2,-22]],[[4540,6093],[0,30],[2,18],[8,33],[4,26],[0,28],[-3,40],[-5,20],[-6,11],[9,24],[0,28],[-9,26],[0,-9],[-5,11],[-4,19],[-4,-3],[-1,-16]],[[4526,6379],[-1,6],[3,26],[55,0],[55,0],[0,15],[-4,71],[3,10],[12,16],[17,11],[0,146],[56,0],[36,0],[0,74]],[[6603,4026],[2,-11],[-3,-12],[-9,-1],[0,15],[4,13],[6,-4]],[[5969,4525],[0,2]],[[5969,4527],[0,-2]],[[5964,4534],[0,2]],[[5964,4536],[0,-2]],[[5952,4624],[-3,6]],[[5949,4630],[3,-6]],[[5946,4634],[0,1]],[[5946,4635],[0,-1]],[[5941,4623],[2,-16],[8,-22],[-1,-51],[3,-25],[-8,-21],[0,-15],[4,-4],[0,-16],[4,-12],[-1,-26],[2,-9],[7,-10],[-2,-24],[7,-10],[2,11],[8,-16],[4,0],[-6,34],[-6,2],[0,12]],[[5922,4376],[-7,-1],[-2,12],[-6,14],[6,8],[4,49],[9,3],[5,11],[-4,0],[-4,11],[2,15],[-3,27],[5,15],[-4,17],[7,6],[5,11],[-4,20],[-6,8],[1,15],[-4,12],[-7,1],[-1,11]],[[5914,4641],[10,-5],[4,-7],[9,1],[4,-7]],[[8093,5320],[-2,3],[0,20],[2,-2],[0,-21]],[[8269,5423],[5,-1]],[[7786,5497],[-1,-11],[-3,11],[4,0]],[[7773,5553],[-3,-8],[-3,8],[6,0]],[[7834,5543],[9,-7],[3,-14],[18,-29],[9,-33],[1,-32],[-4,-8],[0,-23],[4,-12],[-2,-6],[1,-32],[10,-15],[3,-23],[8,-23],[1,-24],[-16,4],[-4,-10],[-5,15],[-15,19],[-7,11],[-10,9],[-11,21],[-14,15],[2,9],[-2,17],[-6,17],[-11,19],[2,9],[-4,6],[1,21],[-2,19],[-6,11],[2,6],[-2,23],[0,26],[-7,25]],[[7780,5554],[2,15],[4,-9],[12,-7],[2,-11],[7,1],[0,-19],[-3,-9],[3,-8],[5,9],[9,7],[6,-10],[7,30]],[[8045,5303],[0,-10],[8,-13],[9,1],[16,-8],[6,-6],[0,16],[5,22],[0,18],[4,0],[2,16],[5,8],[11,2],[20,10],[9,9],[12,33],[7,12],[6,19],[1,16]],[[8193,5464],[1,-4]],[[8198,5465],[6,1],[6,15],[-6,9],[6,11],[6,0],[3,14],[4,4],[1,17],[6,6],[1,8],[8,18],[3,19],[3,-3],[-2,-22],[6,8],[3,15],[4,-2],[1,-18],[7,-3],[6,-10],[-4,-13],[5,-16],[6,9],[3,-14],[8,-1],[9,-15],[15,-10],[0,-11],[-15,-13],[-7,-1],[-2,6],[-7,-8],[5,-14],[9,-13],[-18,-12],[-11,10],[-1,-14]],[[8256,5598],[-5,-6],[0,10],[6,4],[-1,-8]],[[5649,4167],[22,9],[17,-1],[7,-5],[6,-12]],[[5554,3757],[1,-13],[0,-196],[-12,-8],[-2,-9],[-7,-5],[-3,-11],[-11,7],[-16,-4],[-16,13],[-5,-1],[-2,28],[-4,0],[-3,11],[-5,-2],[-4,-12],[0,-11],[-8,-7]],[[5457,3537],[-5,4],[-15,27],[-12,41],[-2,21],[-5,18],[2,11],[-5,7],[0,21],[-3,11],[-1,23],[1,20],[-11,53],[1,33],[-2,25],[3,10],[-1,27],[-14,39],[-4,18],[-13,37],[-5,37],[-3,3],[-4,20],[-7,22],[-3,18],[-8,23],[-8,14],[-5,21],[-3,36],[1,12]],[[9665,3952],[5,-3],[-1,-13],[-7,3],[-2,12],[5,1]],[[9646,3990],[4,-27],[-9,7],[-1,8],[6,12]],[[9555,4026],[7,-13],[6,0],[16,-24],[5,-3],[11,-30],[7,-3],[15,-20],[4,-10],[11,-14],[2,-10],[-3,-5],[-12,8],[-2,-4],[-6,8],[-2,13],[-4,-1],[-7,14],[-13,7],[-4,13],[-12,16],[-1,8],[-6,6],[-12,44]],[[5416,6507],[4,-53],[1,-34],[12,-31],[-1,-12],[11,-21],[-7,-29],[0,-21],[-6,-142],[-1,-9],[-22,-46],[-12,-29],[-13,-39],[0,-11],[-9,-19],[4,-39]],[[5377,5972],[-6,1],[-4,-10],[-5,0],[-14,-18],[-2,-10],[-10,2],[-7,9],[-12,6],[-22,1],[-13,-6],[-7,-7],[-8,-20],[-18,2],[-10,7],[-15,20],[-9,1],[-10,-12],[-6,0],[-3,-7],[-7,4],[-4,15],[-12,21],[-3,-3],[-16,14],[-8,-8],[-12,2],[-11,-6],[-9,-11],[-1,-28],[-4,-14],[-8,-13],[-1,-25],[1,-21],[-2,-2]],[[5377,5972],[13,-36]],[[5238,5460],[-5,-4],[-6,14],[5,-21],[-2,-4],[-17,-3],[-14,10],[0,-10],[-4,-4],[0,13],[-4,2],[3,-18],[-25,-6],[-7,6],[-8,17],[-3,12],[-3,27],[-4,8],[-3,17],[-6,13],[-13,20],[-15,4],[-12,-1],[4,6],[-5,2],[0,-9],[-19,-1]],[[2691,6046],[-6,-4],[4,-35],[-7,-20],[-4,-40],[2,-21],[-1,-19],[2,-10],[-4,-2],[1,15],[-5,-4],[4,-12],[-5,-31],[3,2],[1,-14],[-6,-11],[1,-16],[5,-12]],[[2619,5821],[-6,13],[-12,18],[-7,15],[-4,17],[-26,41],[4,10],[6,-5]],[[5093,8141],[24,0]],[[5162,8210],[-10,-17],[-10,7],[15,13],[5,-3]],[[5118,8141],[-21,6],[1,7],[9,1],[7,-11],[-3,33],[8,7],[6,13],[6,36],[10,-1],[14,21],[11,5],[24,3],[9,-12]],[[5140,8230],[7,-10],[-8,-8],[0,-15],[12,-5],[12,14],[-12,20],[-2,13],[-9,-9]],[[5157,8665],[-10,4],[10,9],[0,-13]],[[5249,8849],[3,-8],[-16,-5],[-3,7],[16,6]],[[5244,8857],[-2,-7],[-13,0],[15,7]],[[5344,8955],[3,-6],[-12,-11],[9,17]],[[5387,9114],[3,-5],[-17,-6],[5,13],[9,-2]],[[5420,9124],[-11,-11],[-15,-6],[9,15],[17,2]],[[5441,9154],[2,-15],[8,12],[8,-5],[-1,-15],[-21,-8],[-4,-7],[-17,-3],[6,18],[6,0],[6,23],[7,0]],[[5421,9152],[6,-15],[-9,-5],[-18,7],[21,13]],[[5439,9158],[-11,-3],[20,19],[-9,-16]],[[5492,9188],[10,-7],[-3,-14],[-32,-8],[9,12],[-6,8],[22,9]],[[5523,9207],[6,-7],[-8,-11],[-17,-2],[5,15],[14,5]],[[5533,9218],[12,-6],[-15,-10],[-9,7],[12,9]],[[5652,9249],[5,-8],[-16,-11],[-6,7],[17,12]],[[5649,9262],[-11,-16],[-24,-4],[7,13],[17,-3],[11,10]],[[5856,9203],[2,-15],[-17,4],[-10,-15],[-16,-3],[-11,-16]],[[5572,9158],[-14,0],[7,-8],[-11,-20],[0,-11],[-42,13],[-8,-3],[1,-19],[-8,-13],[-16,8],[-15,-11],[-5,-16],[-14,-13],[9,-12],[-1,-10],[-27,-31],[2,-13],[-12,-7],[-15,-1],[3,-17],[-3,-30],[-5,-12],[-20,-30],[14,-8],[1,-15],[-5,-10],[-21,5],[-15,-8],[-14,-21],[-5,-18],[6,-16],[-4,-24],[7,-20],[-5,-30],[20,-20],[-4,-18],[-13,-4],[10,-29],[-3,-21],[-10,-13],[-7,0],[-6,-16],[4,-21],[-6,-21],[-5,6]],[[5317,8580],[-2,7],[-16,4],[-5,22],[-5,-3],[1,-15],[-5,-12],[-15,-2],[-28,-36],[-16,-16],[-15,-5],[-30,5],[4,7],[-19,9],[-10,9],[-4,11],[2,18],[14,-10],[-5,13],[9,14],[-12,11],[2,-11],[-10,-4],[-8,9],[8,18],[11,0],[-5,7],[7,5],[5,15],[10,13],[-13,-9],[-6,-16],[-6,16],[-6,-8],[-6,8],[3,14],[12,-3],[-1,14],[-10,-9],[-10,14],[3,16],[10,0],[-13,10],[0,10],[11,7],[-11,5],[11,16],[33,-6],[-31,8],[-7,-3],[7,17],[13,1],[25,16],[-12,-3],[12,13],[22,-8],[-1,10],[-16,2],[-2,12],[10,5],[7,-6],[16,2],[4,11],[12,-2],[-5,11],[34,19],[7,-14],[24,5],[-2,8],[19,14],[2,9],[-18,-7],[2,-9],[-26,-14],[-12,16],[15,11],[-3,9],[14,10],[12,17],[13,-11],[0,17],[11,5],[4,17],[19,3],[-10,6],[10,12],[-8,12],[27,33],[-8,8],[9,16],[12,10],[-7,6],[20,4],[10,13],[22,-3],[0,5],[-28,1],[28,31],[-15,-9],[4,15],[30,7],[-22,1],[23,8],[5,-17],[6,8],[-11,14],[17,8],[32,-1],[-9,8],[-29,-5],[2,11],[24,6],[6,22],[10,6],[4,14],[19,5],[11,13],[26,10],[8,-11],[15,2],[11,14],[19,-17],[-5,14],[-18,15],[28,3],[20,-6],[5,-14],[11,25],[29,23],[0,11],[37,-7],[-19,-17],[-9,-26],[8,-1],[6,15],[33,35],[-3,-34],[17,22],[11,6],[-8,10],[28,3],[8,-5],[-19,-29],[14,2],[11,20],[9,1],[21,-14],[8,4],[27,-25],[-16,-2],[-10,-10],[-39,6],[-3,-4],[29,-8],[-2,-12],[34,3]],[[5713,9281],[11,-11],[-15,-3],[-6,9],[10,5]],[[4778,9282],[-1,-9],[-15,-2],[16,11]],[[5647,9686],[-7,-11],[38,-10],[-33,-33],[-23,0],[10,17],[-53,-6],[22,27],[-22,9],[23,8],[45,-1]],[[5596,9708],[21,-5],[1,-13],[-43,-4],[-15,17],[36,5]],[[5313,9706],[24,-18],[-29,12],[-16,19],[13,4],[8,-17]],[[5467,9783],[4,5],[53,-31],[2,-16],[23,1],[8,-9],[40,-9],[-5,-12],[-44,-1],[-22,-10],[3,-21],[-18,-4],[-5,-31],[-14,1],[-11,-30],[-12,-11],[3,-11],[-20,6],[-35,25],[-18,3],[-9,22],[50,-2],[-31,7],[59,9],[-36,4],[-50,-9],[-5,19],[40,3],[17,12],[27,1],[-3,22],[-14,-14],[-16,-1],[-1,23],[-28,-21],[10,-6],[-25,-10],[-23,-1],[-17,20],[-20,10],[21,16],[-19,4],[10,14],[-23,-12],[-16,26],[31,17],[9,-10],[47,12],[-3,-10],[-33,-9],[37,-1],[19,16],[20,-12],[5,-15],[28,-25],[-14,23],[-7,33],[24,9],[7,-9]],[[5642,9812],[113,-16],[-1,-15],[-37,-13],[-5,-13],[-38,-5],[-6,-7],[-32,2],[-1,11],[-57,-2],[-32,10],[22,8],[39,1],[0,7],[-66,-7],[-28,4],[-12,23],[33,-5],[33,19],[53,-25],[3,26],[19,-3]],[[9617,2273],[0,-19],[-6,6],[6,13]],[[9665,2494],[6,-10],[0,-14],[-12,-2],[-5,-8],[1,13],[5,6],[-1,14],[6,1]],[[96,2665],[10,-1],[-9,-6],[6,-11],[-9,-5],[3,13],[-9,8],[8,2]],[[9802,2850],[-4,0],[-2,-14],[9,-2],[1,-21],[4,-9],[10,14],[6,3],[3,-10],[3,13],[9,-2],[-4,-7],[3,-10],[-6,-8],[6,-18],[-8,-17],[-3,-13],[-9,-13],[-6,-23],[-15,-16],[-1,-24],[9,-5],[1,-9],[-7,-4],[-10,10],[-7,-9],[-25,-22],[-4,-20],[0,-17],[-7,-15],[-5,-25],[0,-16],[-8,-3],[-17,-24],[-4,-11],[-13,-7],[-11,0],[-1,6],[-13,-4],[-5,16],[-11,-2],[-2,10],[-8,3],[-3,-7],[-16,3],[1,13],[-9,0],[0,10],[9,6],[-2,8],[4,17],[8,-7],[-4,16],[36,56],[2,7],[10,1],[19,21],[8,4],[16,27],[14,12],[13,29],[6,37],[9,4],[8,16],[1,31],[15,21],[7,0]],[[9872,3102],[4,-10],[-7,5],[3,5]],[[9807,3201],[-1,-14],[3,-11],[8,-8],[8,2],[10,-9],[2,-9],[5,4],[1,-13],[5,-10],[-2,-23],[9,-16],[-3,-21],[7,-17],[8,0],[4,-17],[5,3],[-4,18],[3,20],[3,-14],[7,-9],[1,-35],[2,-7],[14,-7],[19,-13],[10,4],[5,14],[8,7],[8,0],[7,-10],[-6,-15],[-1,-32],[-10,-9],[-2,-34],[-1,12],[-12,1],[-10,-8],[-4,-10],[1,-13],[4,-3],[-5,-25],[-8,-21],[-6,-9],[-9,-30],[-8,-14],[-13,-14],[-3,11],[-9,-1],[-8,12],[4,4],[10,24],[4,27],[-5,17],[-15,10],[-6,12],[-9,4],[-6,8],[1,14],[22,19],[3,41],[4,20],[-3,30],[4,10],[-3,8],[-8,-6],[-2,16],[-6,19],[7,-12],[-2,22],[-11,8],[1,-9],[-26,61],[2,16],[-12,29],[10,1]],[[6629,6344],[-1,12],[8,19],[-7,-31]],[[6474,6141],[-8,37],[-2,0],[-11,55],[-10,44]],[[6443,6277],[13,8],[52,37],[19,12],[9,56],[9,61],[-13,39]],[[6566,6621],[6,-28],[6,-15],[10,-17],[31,-18],[8,2],[6,-11],[13,-39],[7,-13],[8,-2],[0,-17],[-9,-27],[-4,-19],[-12,-17],[-11,-42],[-8,1],[1,11],[-5,-3],[-3,-13],[-4,-4],[-1,-20],[-3,-10],[2,-31],[2,-11],[-3,-4],[-15,-2],[-8,-6],[-7,-12],[-3,-28],[-5,-10],[-5,1],[-21,-7],[-6,-19],[2,-9],[-7,-20],[-8,-3],[-4,5],[-16,-3],[-12,-14],[-7,0],[-7,-6]],[[6557,6684],[2,8],[9,-6],[-5,-27]],[[6893,6556],[-1,-9],[-8,10],[-6,-3],[-8,15],[-5,42],[-13,5],[1,20],[-5,7],[-3,13],[-7,1],[2,-7],[-16,-8],[-13,2],[-1,-4],[-23,-1],[-19,6],[-4,-11],[-28,4],[-5,-6],[-17,-8],[1,8],[-5,2]],[[2729,5623],[3,-19],[-7,12],[4,7]],[[2836,5599],[-8,16],[-7,31],[5,4],[0,10],[5,8],[-5,3],[-4,-7],[-3,16],[-10,15],[-6,5],[-10,2],[-9,-12],[0,-13],[-8,-11],[-12,-10],[0,-8],[10,-19],[4,-14],[-10,-6],[-2,-9],[-13,-2],[0,7],[-8,30],[-1,-14],[-10,8],[-3,19],[-9,8],[-6,-1],[0,8],[-8,-4],[-9,2],[-2,-16]],[[2706,5734],[6,-10],[3,-23],[13,-4],[-4,11],[5,-3],[6,-15],[10,-1],[9,5],[7,12],[14,8],[14,22],[10,-4],[7,2],[-2,-7],[16,-2],[17,-19],[3,-9],[10,-15]],[[3073,4289],[-8,13],[-7,0],[2,-20],[-3,4],[-3,-15],[17,-10],[-2,-8],[7,-8],[4,3]],[[3084,4249],[-2,-19]],[[3044,4127],[-14,19],[0,3],[-13,15],[0,13],[-3,10],[-18,16],[-6,15],[-10,5],[-17,20],[-17,13],[-3,8],[-32,34],[-1,9],[-9,19],[-10,12],[-6,25],[-4,2],[0,15],[3,23],[-10,34],[0,7],[-8,20],[1,6],[-7,9],[-3,11],[-2,23],[-4,10],[-8,9],[1,11],[-4,20],[-12,36],[-1,20],[-4,9],[-2,18],[-5,8],[-4,33],[-6,23],[-14,29],[-6,35],[-7,12],[-6,16],[-16,16],[-11,17],[0,11],[8,6],[-2,16],[-7,11],[3,15],[-8,19],[2,25],[12,23],[0,5],[14,21]],[[8339,5486],[-9,-12],[-3,4],[12,8]],[[8361,5534],[5,-6],[-8,-6],[3,12]],[[8390,5552],[-3,0],[-4,14],[7,5],[7,-7],[-7,-12]],[[8493,5581],[-3,9],[3,5],[0,-14]],[[8251,5645],[-2,-13],[-1,14],[3,-1]],[[8489,5736],[9,-8],[3,-13],[4,4],[-1,-13],[4,-7],[0,-10],[-6,-9],[8,-6],[-1,-20],[3,3],[-2,-23],[5,-6],[1,-27],[-4,-16],[-6,-12],[-1,-28],[-4,20],[1,8],[-6,19],[-1,14],[-5,-4],[0,-9],[-5,-8],[-3,-22],[6,-6],[3,-20],[-1,-12],[-7,-21],[-7,13],[3,8],[-3,9],[-3,-14],[-10,5],[-13,14],[-5,15],[0,20],[-2,0],[1,19],[6,8],[0,9],[-5,11],[-15,13],[-3,-12],[1,-15],[-4,9],[-4,-1],[0,12],[-4,-14],[-6,0],[1,16],[-9,-3],[-7,-26],[-2,-17],[-3,-3],[-5,9],[7,30],[-1,11],[7,16],[16,6],[3,21],[8,1],[2,11],[3,-6],[6,1],[4,-13],[0,-15],[11,6],[2,17],[3,4],[6,-8],[3,5],[0,23],[4,1],[5,-9],[5,10],[7,1],[0,17],[-4,21],[2,8],[5,-12]],[[8503,5750],[-4,-2],[2,14],[2,-12]],[[8453,5767],[7,-6],[-1,-12],[-7,-13],[-12,2],[-2,9],[7,10],[3,10],[5,0]],[[8479,5754],[-4,9],[3,3],[1,-12]],[[8490,5782],[1,-31],[-5,11],[0,15],[4,5]],[[8332,5791],[-6,-5],[2,10],[4,-5]],[[8408,5792],[-5,-9],[0,11],[4,7],[1,-9]],[[8423,5815],[8,-4],[1,-7],[-7,-25],[-1,-15],[-4,-13],[0,-19],[5,-11],[-2,-12],[-7,-5],[-3,15],[-9,8],[-5,15],[2,15],[11,6],[-1,23],[4,23],[8,6]],[[8444,5821],[1,-35],[-2,-9],[-9,-14],[0,-7],[-6,-27],[-3,-4],[2,34],[9,27],[5,33],[3,2]],[[8319,5836],[0,-30],[6,-17],[-10,-11],[-4,-14],[-13,-9],[1,-12],[-9,-26],[-10,-10],[-1,-9],[-8,-14],[-6,-2],[-1,-9],[-9,0],[19,43],[4,0],[9,23],[7,11],[6,20],[12,17],[4,32],[0,14],[3,3]],[[8456,5842],[7,-8],[4,7],[6,-10],[-1,-30],[5,-8],[2,-19],[-8,-4],[2,-10],[-8,7],[-1,14],[2,19],[-2,11],[-5,5],[-4,-4],[1,30]],[[8456,5856],[5,-12],[-5,0],[0,12]],[[8396,5860],[10,-14],[4,6],[3,-11],[7,8],[-1,-24],[-9,-10],[-1,-11],[-6,-6],[-9,-2],[-6,-13],[-2,20],[4,17],[0,39],[-6,1],[3,10],[9,-10]],[[8332,5870],[2,-13],[-3,-2],[-2,15],[3,0]],[[8331,5890],[11,-11],[0,-5],[-10,1],[-1,15]],[[8405,5890],[-5,12],[6,0],[-1,-12]],[[8469,5906],[10,-3],[2,-13],[5,-4],[-2,-6],[1,-33],[6,-24],[-14,0],[-2,10],[-4,0],[-4,10],[6,17],[-5,0],[-6,16],[-8,11],[-3,20],[7,-3],[11,2]],[[8426,5905],[6,-6],[5,-13],[4,-1],[4,-15],[0,-12],[-17,28],[-8,-17],[3,13],[-1,26],[4,-3]],[[8392,5910],[-3,-30],[-3,11],[2,17],[4,2]],[[8434,5912],[3,-18],[-5,16],[2,2]],[[8421,5926],[-7,8],[2,6],[5,-14]],[[8360,5962],[15,-22],[-1,-23],[-3,-26],[-4,-5],[-9,17],[-4,15],[0,14],[-7,12],[-4,18],[10,-4],[7,4]],[[8385,5963],[7,-9],[-4,-11],[-5,8],[2,12]],[[8450,5993],[5,-11],[0,-12],[-7,-8],[-4,7],[3,5],[0,20],[3,-1]],[[8387,6049],[2,-18],[-3,-5],[-3,23],[4,0]],[[8358,6252],[7,4],[10,-14],[13,-6],[4,13],[3,0],[2,-15],[-4,-8],[-1,-29],[3,-15],[4,0],[2,-28],[-8,-32],[1,-4],[-18,-18],[2,-10],[-7,-28],[9,-32],[-3,-1],[4,-30],[5,-10],[10,-2],[-3,13],[8,9],[8,-1],[9,-20],[-1,-12],[5,-3],[3,17],[17,-13],[1,-4],[-12,-1],[0,-8],[5,-8],[4,-16],[6,-8],[2,-12],[-2,-14],[-6,5],[-1,13],[-7,1],[-8,7],[0,14],[-3,11],[-7,6],[-5,16],[-9,7],[2,-18],[5,-15],[-3,-12],[-7,25],[-17,19],[-8,-8],[1,-6],[-11,-4],[-4,16],[-6,2],[-2,-7],[-1,24],[11,17],[-4,14],[-9,-4],[2,-13],[-4,-3],[-4,23],[-7,4],[-1,23],[-4,8],[1,26],[-4,3],[0,23],[9,-15],[9,5],[-3,17],[0,21],[4,10],[-1,11],[0,43],[5,23],[-1,10],[10,4]],[[8740,5620],[-2,-13],[-3,3],[5,10]],[[9256,4529],[13,-10],[0,-5],[-10,3],[-3,12]],[[9195,4611],[7,-2],[-2,-10],[-8,2],[-5,23],[8,-13]],[[9184,4640],[3,2],[5,-15],[-14,1],[0,16],[6,-4]],[[9176,4644],[-1,-9],[-5,5],[-1,9],[6,1],[1,-6]],[[9234,4667],[10,-3],[5,-11],[-10,2],[-5,12]],[[8989,4680],[-11,16],[11,-11],[0,-5]],[[8981,4701],[6,0],[1,-7],[-7,7]],[[9105,4867],[7,-7],[-1,-11],[-7,10],[1,8]],[[9299,4867],[8,-4],[3,-17],[6,-8],[1,-9],[5,-4],[8,-16],[2,-14],[-7,-8],[-5,1],[-10,17],[1,14],[-14,25],[0,19],[2,4]],[[9089,4870],[-4,0],[-2,11],[3,3],[3,-14]],[[9296,4889],[-2,-21],[-1,25],[3,-4]],[[9228,4941],[-2,-6],[7,-2],[0,-17],[-5,-20],[-8,-1],[5,-25],[-8,-9],[-11,3],[2,-8],[-14,-21],[-15,-13],[-24,-2],[-3,10],[-6,4],[-6,-5],[-2,7],[-10,12],[-9,7],[4,14],[11,-5],[3,4],[7,-8],[20,6],[2,24],[4,-27],[8,6],[8,-5],[8,6],[0,10],[10,20],[7,-3],[2,5],[-2,23],[-3,16],[7,0],[5,-8],[2,8],[6,0]],[[8915,5033],[7,-1],[25,-25],[25,-17],[13,-4],[9,-11],[5,-11],[15,-2],[0,-8],[9,-6],[5,-15],[8,-3],[13,-25],[-1,-38],[14,-4],[18,-16],[5,-7],[12,-3],[9,-22],[0,-18],[-25,-3],[0,-12],[5,-13],[1,-15],[7,-6],[8,-21],[12,-8],[3,-30],[7,-9],[2,-19],[21,3],[-4,-19],[1,-9],[7,-6],[15,-2],[1,-5],[-9,-5],[8,-16],[10,-7],[12,-3],[-4,-5],[-9,-1],[10,-10],[-7,-9],[-13,6],[2,7],[-9,8],[-7,-1],[-8,6],[-12,0],[1,5],[-11,-3],[-2,5],[-17,1],[-11,33],[-5,2],[-7,22],[-8,6],[-4,23],[-10,30],[-13,9],[-5,-1],[-7,8],[-9,2],[-6,12],[-6,-1],[2,-13],[-7,10],[1,-8],[-13,8],[4,-19],[-11,-4],[1,-12],[-18,-5],[-6,1],[11,-10],[7,-15],[1,-11],[-22,-23],[-11,10],[-20,-3],[-6,4],[-3,-5],[-6,7]],[[9195,5027],[10,-11],[11,-17],[7,-3],[14,-33],[11,-10],[5,-22],[-2,-14],[-5,-10],[-6,14],[1,21],[-5,19],[-10,21],[-6,2],[-9,16],[-5,4],[-9,15],[-10,7],[8,1]],[[9172,5046],[6,-5],[0,-12],[-8,0],[-3,9],[5,8]],[[9079,5070],[12,-5],[-3,-8],[-17,0],[0,11],[8,2]],[[9154,5105],[6,-13],[-6,5],[0,8]],[[5544,8319],[0,-1]],[[5544,8318],[4,-1]],[[5548,8317],[63,-4],[21,0]],[[5655,8150],[1,-13],[14,-27],[-5,0],[4,-18],[-10,-8],[-18,-24],[-13,-25],[4,-28],[-6,2]],[[5626,8009],[-15,8],[-11,12],[-16,-2],[-4,-6],[-6,6],[-10,0],[-14,-12],[-1,12],[-10,11],[-7,-11],[-9,7]],[[5396,8275],[8,-3],[0,13],[-10,0]],[[5394,8289],[54,20],[12,16],[10,2],[11,9],[27,5],[7,-23],[12,-6],[17,7]],[[3138,6248],[29,-2],[9,-6],[2,-7],[-7,-13],[-9,-5],[-17,3],[-12,-1],[1,15],[-3,7],[3,10],[4,-1]],[[8625,7631],[5,-14]],[[8630,7617],[-7,4],[-11,-15],[-11,-27],[4,-15],[-3,-11],[1,-19],[-11,-5],[-7,-16],[-13,-11],[-8,-14],[-9,1],[-4,-9],[-10,-8],[2,-9],[-6,-13],[2,-13],[9,-2],[17,-29]],[[8518,7361],[-8,4],[-8,-9],[-8,15],[-7,1],[2,-14],[-10,9],[-7,-2],[3,9],[-13,4],[9,5],[-3,9],[10,20],[-3,4],[4,21],[5,14],[-4,8],[-16,7],[-11,14],[1,12]],[[4525,7072],[11,-2],[-3,-7],[-10,3],[2,6]],[[4286,7362],[15,1],[0,-6],[-10,-3],[-5,8]],[[4220,7396],[-11,-2],[-2,9],[13,-7]],[[4248,7409],[-8,0],[0,8],[6,0],[2,-8]],[[4794,7325],[-12,-12],[-21,8],[-10,-7],[4,24],[1,44],[-4,18],[-8,-2],[-1,11],[8,6],[-2,7],[-4,-11],[-9,1],[4,38],[6,7],[7,36],[-1,3],[7,47],[-6,50],[3,7]],[[3492,3797],[-1,-17],[-4,-23],[-1,-22],[-3,-17]],[[5949,6986],[8,16]],[[5987,7012],[-4,-16]],[[853,4163],[-9,-2],[-1,11],[5,3],[5,-12]],[[6422,6601],[-8,-2],[-3,9]],[[6411,6608],[1,10],[-3,15],[1,20],[3,6],[4,24],[6,6],[4,-12],[5,-2],[1,-9],[-4,-14],[4,-14],[0,-15],[-4,-17],[-7,-5]],[[5783,7801],[3,-8],[11,-6],[14,12],[10,-3],[2,-9]],[[5823,7787],[-1,-22],[-14,-4],[-3,13],[-4,-3],[-6,-35],[1,-21],[-3,-13]],[[5630,7730],[-6,15],[8,5],[-10,9],[-6,-14],[-5,9],[-10,2],[-9,9],[5,16],[-15,12],[-6,9],[1,16],[-13,13],[-2,7]],[[5635,7944],[10,8],[7,-5],[20,-6],[10,3],[9,-14],[10,11],[26,6],[3,12],[9,3]],[[9064,7741],[7,1],[-12,-10],[-16,-24],[15,37],[6,-4]],[[9133,7793],[-15,-6],[-10,-15],[-5,0],[-7,-11],[-18,-19],[10,17],[-3,3],[25,28],[9,0],[12,15],[2,-12]],[[9182,7845],[-21,-27],[-10,-9],[15,27],[16,9]],[[9227,7898],[-1,-8],[-10,-14],[11,22]],[[9301,8041],[-1,-17],[-6,3],[7,14]],[[9336,8091],[-7,-15],[-9,-4],[-5,-11],[-5,16],[15,9],[4,15],[7,3],[0,-13]],[[9344,8100],[-7,6],[7,7],[0,-13]],[[8967,8309],[5,-11],[-3,-7],[8,-35],[4,-38],[-6,-46],[5,-11],[-2,-12],[6,0],[9,-69],[10,-33],[0,-7],[8,-36],[-9,14],[-23,9],[3,-6],[-10,-7],[-2,-16],[-12,-57],[6,-26],[8,-11],[0,-11],[5,-21],[9,4],[1,-28],[-3,-6],[-2,22],[-17,3],[-2,6],[-7,-5],[-6,-32],[-5,-9],[-3,6],[-4,29],[7,30],[-3,31],[7,21],[-3,26],[-5,12],[7,55],[0,46],[-3,10],[1,17],[5,19],[-5,18],[-11,14],[-1,38],[4,5],[3,26],[-4,26],[13,9],[1,-9],[10,9],[-4,8],[9,2],[-2,12],[-10,21],[5,-2],[5,11],[3,-8]],[[9669,8321],[-19,19],[4,0],[15,-19]],[[8810,8355],[-14,-11],[8,11],[6,0]],[[8827,8358],[9,-8],[-12,-22],[-6,15],[-6,1],[8,17],[7,-3]],[[5548,8317],[18,15],[-10,2],[-12,-16]],[[5544,8319],[10,17],[0,12],[12,-1],[15,19]],[[5582,8366],[-12,-19],[12,-3],[7,5],[1,15]],[[9609,8371],[18,-27],[1,-11],[-13,14],[-4,13],[-7,6],[5,5]],[[9571,8591],[3,-16],[-8,-2],[-23,-18],[9,26],[19,10]],[[5777,8600],[3,-1]],[[6924,9029],[21,-5],[-5,-13],[-16,18]],[[6396,9167],[-24,-22],[-23,-4],[-10,9],[1,19],[15,16],[13,1],[28,-19]],[[9482,9188],[-3,-8],[6,-25],[-10,6],[-2,19],[9,8]],[[9705,9201],[-6,-12],[-29,7],[-11,8],[14,11],[32,-8],[0,-6]],[[6648,9234],[5,-8],[26,-17],[0,-11],[-25,-1],[-5,11],[-10,-2],[-13,12],[-1,15],[13,8],[10,-7]],[[6464,9295],[14,-14],[-6,-11],[-7,12],[-15,9],[14,4]],[[0,9271],[9990,-7],[-25,-4],[-4,14],[8,11],[30,17],[-9999,-31]],[[8829,9305],[-3,-9],[-20,5],[23,4]],[[0,9302],[26,4],[18,-3],[27,-17],[-12,-12],[-42,-8],[-17,5],[0,31]],[[7160,9347],[-27,1],[22,18],[21,-9],[-16,-10]],[[8580,9366],[-7,-7],[-15,7],[22,0]],[[8592,9374],[-28,2],[18,7],[10,-9]],[[7209,9382],[0,-11],[-19,1],[-8,7],[16,13],[11,-10]],[[7078,9392],[-5,-14],[-16,10],[21,4]],[[6536,9406],[31,-6],[-8,-26],[-15,-9],[-7,-32],[5,-18],[16,-29],[23,-20],[19,-10],[-49,-5],[-16,3],[-2,-8],[-14,12],[-18,-1],[-11,7],[-11,34],[-11,-4],[-10,10],[-19,-6],[-8,6],[-3,22],[11,12],[15,-5],[9,22],[11,9],[-20,7],[7,8],[21,1],[-7,12],[17,12],[13,-2],[20,9],[11,-5]],[[6970,9416],[1,-13],[11,-6],[-42,-7],[3,20],[27,6]],[[8951,9436],[32,-18],[0,-21],[-33,3],[-40,10],[-27,-4],[2,8],[17,1],[17,22],[32,-1]],[[8903,9439],[-10,16],[20,5],[2,-17],[-12,-4]],[[8148,9464],[-16,-15],[-37,13],[18,14],[34,-4],[1,-8]],[[7281,9528],[-4,-16],[-14,11],[18,5]],[[9075,9530],[47,-4],[5,-12],[15,3],[49,-6],[-8,-15],[-25,-8],[-43,2],[-58,24],[7,20],[11,-4]],[[8773,9524],[-11,-1],[6,29],[14,-16],[-9,-12]],[[8863,9565],[40,-20],[10,14],[19,1],[-8,10],[35,-19],[29,1],[50,-20],[-19,-5],[5,-8],[-16,-15],[-40,6],[-11,13],[15,13],[-3,8],[-25,-4],[5,-18],[12,-15],[30,-9],[-38,-6],[-14,10],[-49,-10],[-6,8],[-17,-18],[-33,8],[-25,20],[-2,34],[18,1],[-9,9],[42,18],[5,-7]],[[7674,9577],[3,-9],[-30,3],[27,6]],[[8125,9595],[2,-10],[-18,11],[16,-1]],[[9145,9596],[-23,0],[29,8],[-6,-8]],[[6893,9615],[24,-15],[-21,-24],[-51,-17],[-116,-32],[-47,-18],[0,-15],[-22,-8],[-2,-8],[-17,8],[1,-16],[-26,8],[15,-17],[-16,-8],[-16,-31],[-24,-20],[-36,4],[-11,6],[-20,-6],[-4,9],[24,12],[-30,-4],[-2,8],[26,12],[-3,6],[26,13],[-3,20],[24,4],[-14,7],[18,4],[-18,4],[-3,9],[21,-4],[14,19],[19,-4],[-5,11],[38,20],[23,3],[14,11],[23,-2],[0,12],[52,-5],[61,15],[49,28],[35,1]],[[7679,9622],[-33,-4],[35,11],[-2,-7]],[[8666,7787],[3,-13],[-2,-13],[9,-14],[7,9],[6,22]],[[6367,7850],[-12,-15],[-2,-14],[-4,9],[-10,-14],[-17,0],[-7,-31],[-8,-23],[-10,-8],[0,-13],[14,-11],[8,-28],[-2,-14],[6,19],[-5,-26],[0,-21],[7,-10],[4,-16],[12,-26],[2,-11],[6,-4]],[[6110,7681],[-15,21],[-1,6],[-18,24],[-15,7],[-11,15],[-9,1],[-8,19],[-17,11],[8,3],[-1,11],[8,-6],[11,2],[5,-4],[0,16],[-4,2],[8,10],[2,14],[4,-6],[2,11],[11,0],[-13,17],[-5,0],[-4,15],[6,-3],[13,14],[24,9],[0,13],[-30,-8]],[[6061,7895],[-1,12],[5,17],[11,5],[3,10],[25,-3],[0,13],[6,12],[-8,29],[10,5],[-8,3],[11,26],[-1,14],[-10,-2],[-5,10],[-7,0],[-5,9],[-6,-5],[-8,10],[-18,-4],[-8,11],[-8,20],[-16,-6],[-6,-7],[-10,4],[-5,8],[-13,-5],[-6,10],[2,10],[-4,19],[-7,12],[-11,-3],[-13,12],[-3,17],[8,9],[-8,8],[-1,10],[-11,13],[-13,1],[-9,-8],[-15,5],[-1,-11],[-12,-7],[-3,5]],[[5767,8523],[9,-9],[6,9],[-6,10],[-10,-2],[7,19],[-4,30]],[[5773,8590],[9,11]],[[5778,8608],[-1,16],[11,-5],[3,11],[10,-4],[7,12],[29,-8],[2,8],[-9,9],[-25,2],[-10,28],[-16,-9],[-7,2]],[[5856,9203],[15,-9],[19,18],[16,-11],[14,-3],[-7,-8],[-20,4],[6,-7],[19,-3],[-6,-7],[19,4],[5,-5],[35,-7],[23,-1],[52,-28],[21,-21],[14,-2],[16,-14],[13,-3],[30,-21],[1,-23],[7,-2],[-5,-24],[-21,-24],[-30,-15],[-22,-4],[-28,5],[-22,9],[-27,3],[-27,15],[-36,7],[-24,23],[-11,0],[8,-15],[18,-11],[3,-9],[13,-6],[-4,-7],[14,-3],[21,-20],[-4,-21],[-6,-7],[13,-46],[-6,-4],[16,-15],[15,2],[12,-18],[31,-13],[16,9],[1,21],[-25,5],[-16,19],[-3,12],[10,2],[7,12],[18,-9],[10,-13],[0,-9],[10,10],[31,-15],[9,7],[18,-7],[-4,22],[-19,30],[4,9],[18,12],[6,9],[18,5],[22,27],[11,-8],[20,3],[22,-21],[1,11],[11,23],[0,16],[-20,19],[10,28],[3,31],[-25,18],[18,-4],[37,0],[18,-6],[16,-18],[5,-18],[-38,-5],[-12,-22],[17,-9],[8,-17],[20,-5],[34,13],[5,22],[-3,11],[26,7],[1,6],[24,9],[31,22],[8,-1],[31,13],[-1,-12],[16,4],[-12,10],[32,18],[15,-3],[-7,-14],[6,-13],[-21,-8],[29,-3],[7,6],[11,-7],[1,12],[29,14],[38,-5],[18,17],[25,8],[15,-13],[-10,-8],[1,-13],[16,-4],[8,10],[-6,7],[20,5],[13,11],[0,10],[-22,28],[15,6],[2,10],[74,-10],[20,-7],[19,-15],[62,-29],[33,-25],[2,-9],[17,25],[7,19],[-21,2],[-10,16],[-1,12],[-35,14],[3,16],[12,3],[-6,9],[6,15],[-1,20],[-16,-3],[-2,17],[8,14],[28,12],[15,17],[14,51],[12,16],[5,-5],[52,1],[39,-11],[1,-25],[-16,-26],[1,-7],[-15,-11],[8,-13],[16,-10],[5,-15],[-2,-25],[-10,-9],[8,-25],[-5,-11],[3,-21],[-3,-16],[5,-8],[26,-20],[-15,-16],[3,-22],[-18,-13],[-9,-27],[-20,-14],[2,-15],[-15,-1],[-10,-7],[-22,21],[-22,-6],[8,-15],[27,-10],[22,2],[24,-8],[10,6],[2,16],[13,2],[26,20],[1,17],[24,24],[-1,25],[-11,15],[3,17],[29,12],[31,4],[1,-11],[19,-15],[-5,-15],[5,-20],[-7,-7],[18,-13],[18,-1],[-25,13],[0,18],[20,10],[-11,14],[-5,24],[-19,5],[-24,13],[-17,1],[-20,-10],[-27,5],[3,18],[-10,15],[6,25],[17,20],[-21,41],[-15,12],[14,22],[39,16],[5,17],[-4,28],[15,-7],[6,-30],[-13,-17],[7,-17],[-5,-18],[11,-4],[57,-7],[6,-11],[12,0],[-4,17],[-17,2],[-39,16],[-8,20],[27,8],[17,-13],[15,3],[-5,14],[-15,-2],[15,14],[16,5],[28,-3],[51,-35],[23,-3],[18,5],[14,-7],[-14,-16],[-16,-6],[-2,-17],[7,-12],[-10,-12],[11,2],[0,11],[10,11],[9,-6],[-4,-27],[-10,-9],[14,-10],[-7,14],[18,0],[6,8],[-17,44],[13,23],[-6,11],[-32,15],[-3,11],[-26,4],[-14,11],[4,23],[-11,9],[2,28],[39,5],[43,-1],[59,10],[40,3],[-23,-18],[25,2],[10,13],[-19,21],[-22,4],[14,18],[-21,4],[13,10],[16,-7],[68,47],[67,8],[66,16],[-28,9],[19,3],[22,-5],[25,7],[21,-3],[-16,-13],[58,10],[32,12],[29,-10],[-29,24],[18,-3],[40,4],[1,26],[63,39],[43,3],[33,-17],[-21,-13],[-24,-3],[82,-7],[6,-6],[-27,-21],[36,-1],[4,12],[38,1],[19,-4],[27,5],[47,-24],[3,-16],[19,4],[3,-28],[-21,5],[1,-12],[22,-1],[-2,-14],[-20,-17],[-20,-6],[-12,-13],[-47,-16],[-2,-9],[-32,-15],[-20,-19],[-27,-1],[-12,-18],[-17,-2],[-6,-15],[-15,-12],[23,6],[7,17],[37,-2],[15,8],[51,12],[23,10],[-7,6],[-25,-5],[-6,8],[13,10],[25,-6],[7,7],[8,-13],[19,-6],[22,5],[-2,12],[16,-20],[-8,-12],[44,9],[19,7],[100,-13],[-18,-4],[1,-11],[38,-12],[36,-5],[25,2],[21,-8],[-7,11],[19,-6],[11,17],[-8,10],[3,16],[17,-2],[10,10],[23,-14],[29,0],[12,-16],[7,15],[30,-4],[7,-12],[34,-14],[-34,-12],[30,-6],[-39,-3],[20,-10],[18,-1],[6,-12],[-15,-11],[-19,8],[27,-37],[13,-27],[40,-21],[13,12],[18,43],[10,14],[13,-19],[23,-12],[22,0],[4,6],[31,8],[22,-6],[19,-11],[11,-13],[7,27],[16,4],[12,-13],[17,2],[-3,27],[15,17],[-29,0],[12,16],[37,2],[4,10],[-12,9],[23,-1],[23,-9],[38,0],[50,-8],[39,-12],[-37,1],[-16,4],[-13,-15],[27,6],[42,2],[-26,-26],[10,16],[-12,4],[-3,-17],[-23,-12],[29,4],[30,31],[36,0],[34,-9],[13,-13],[-12,-9],[-7,7],[-9,-11],[25,-2],[-2,-11],[20,2],[0,-13],[24,3],[18,-20],[-13,0],[26,-9],[28,3],[65,12],[45,-1],[26,-6],[33,-17],[11,-25],[-11,-19],[3,-8],[31,-8],[3,-28],[11,-11],[-10,-25],[14,22],[-2,26],[19,17],[51,7],[23,-12],[23,2],[11,-5],[24,-1],[21,16],[16,-13],[2,-19],[29,-8],[7,-18],[22,4],[17,12],[-13,32],[-11,-1],[11,11],[-1,19],[41,-7],[22,-1],[17,-10],[1,9],[37,-6],[20,2],[28,-7],[71,-27],[17,-16],[-9958,-15],[3,-12],[28,-11],[2,-9],[12,1],[20,-19],[16,-2],[-10,-7],[12,-5],[0,10],[12,-7],[8,-20],[10,-2],[-3,-18],[5,-13],[-7,-6],[14,-8],[-1,-14],[17,13],[-11,3],[9,6],[-2,17],[-9,6],[27,1],[20,-12],[-5,9],[32,-6],[10,-17],[13,-7],[10,-17],[5,4],[17,-14],[-9,0],[-14,-11],[-5,-15],[-21,13],[11,-20],[-32,3],[4,-27],[-19,-12],[-8,-11],[16,-5],[6,-9],[-13,-1],[-12,-9],[-23,10],[-2,8],[-16,10],[-33,12],[-4,29],[-29,10],[-12,-10],[-30,4],[-11,27],[9,7],[2,15],[-7,-11],[-28,-4],[0,-16],[13,-11],[-7,-23],[9982,-11],[-10,-13],[-34,-9],[-21,8],[-1,8],[-16,9],[12,-16],[-24,2],[-11,7],[20,-23],[20,12],[-3,-16],[17,-17],[8,8],[12,-25],[2,-16],[-5,-13],[18,-9],[2,-20],[7,-16],[-12,-7],[0,-10],[-28,12],[-22,3],[-10,16],[2,-16],[-21,-16],[-25,-11],[-25,-18],[-12,2],[-7,-10],[-8,4],[-1,-10],[-10,-10],[-11,2],[5,-8],[-22,-13],[-3,-12],[-17,-4],[-1,-9],[-15,-7],[-10,-16],[-6,-18],[-8,8],[-7,21],[-13,9],[-32,0],[-35,-20],[-16,-23],[-4,0],[8,39],[-33,-24],[-5,-14],[-7,-2],[-2,11],[-30,3],[2,-9],[-9,-4],[-5,-19],[4,-12],[-12,-10],[4,-10],[-18,-16],[-10,-26],[1,-19],[13,-7],[1,11],[18,-8],[3,-6],[-15,-21],[1,-36],[11,1],[4,-32],[-9,-10],[-12,13],[8,11],[-6,4],[-8,-7],[6,-6],[-16,-12],[-7,-25],[-1,-16],[11,-34],[-11,-14],[-13,-1],[-6,6],[-15,-9],[-13,-15],[-6,-22],[4,-13],[-3,-6],[5,-22],[-13,10],[-9,-5],[-21,-25],[1,-26],[-7,-19],[-10,-20],[-11,-7],[-2,-8],[-17,-22],[-9,17],[-1,40],[-4,33],[-7,23],[-4,46],[-9,60],[-2,29],[4,46],[6,29],[6,15],[17,15],[7,17],[-5,22],[16,0],[7,14],[15,0],[20,19],[24,33],[3,13],[13,12],[5,12],[8,2],[18,25],[14,14],[-1,8],[30,21],[21,9],[-8,4],[15,18],[-7,9],[8,12],[2,33],[14,12],[17,-5],[-18,17],[-15,-1],[-22,-8],[3,-11],[-8,-6],[3,-9],[-6,-15],[10,-9],[-10,-7],[-5,11],[-10,-2],[-12,-18],[-32,-32],[-19,-14],[8,27],[-17,-7],[5,11],[-3,9],[14,29],[-3,10],[-12,-14],[-10,-2],[-3,12],[-13,2],[-26,-10],[-15,3],[-22,-15],[-1,-18],[-20,-20],[0,-9],[-27,-20],[-13,-28],[-7,-1],[-2,-23],[14,5],[16,-14],[-1,-7],[-11,-3],[-8,5],[-13,-10],[-19,11],[0,-8],[-10,-2],[-2,-8],[-16,8],[-9,-11],[-17,-2],[-9,15],[10,4],[18,-1],[6,4],[-15,8],[-10,14],[-13,-8],[-12,2],[-2,7],[-23,8],[-16,-8],[5,-5],[-14,-5],[6,-12],[-14,2],[-2,7],[-12,0],[-10,-9],[-31,13],[-3,-16],[-8,-3],[-6,9],[4,6],[-27,-1],[-32,2],[-19,-3],[-25,-13],[-19,-30],[-17,-11],[-8,-13],[-5,-20],[-15,-9],[-4,-11],[-11,-12],[-14,-9],[-22,-32],[-12,-26],[-26,-27],[-8,-4],[-15,-23],[-19,-15],[0,-12],[14,-9],[30,5],[0,-28],[-4,-21],[12,0],[5,14],[-6,6],[10,10],[8,-2],[-8,-11],[9,-11],[-12,-22],[16,4],[11,9],[7,14],[1,-9],[-10,-15],[7,-3],[8,26],[-1,20],[16,-8],[9,5],[17,-12],[0,-11],[27,-32],[6,-10],[-13,-12],[8,-5],[1,-15],[-4,-13],[11,-12],[-6,-3],[3,-9],[-9,-16],[-6,-3],[0,-12],[-6,-8],[0,-18],[-4,-4],[-3,-20],[1,-32],[3,-23],[-6,-17],[1,-17],[-6,-17],[0,-14],[-26,-38],[-7,-28],[-13,-18],[-5,-27],[-18,-41],[-15,-25],[-10,-11],[-8,-20],[-6,-6],[-5,-15],[-7,-5],[-11,-25],[-3,-14],[-5,0],[-1,-12],[-18,-20],[-9,-6],[-7,-11],[-8,0],[-12,-10],[-6,7],[-4,-4],[-12,10],[-3,-4],[-1,23],[-9,-11],[1,15],[-16,-21],[-1,-11],[-14,-11],[-4,-17]],[[7858,9748],[0,-12],[30,4],[14,-16],[16,-1],[8,-19],[-16,-10],[-31,-5],[-68,-3],[-33,-14],[-21,5],[21,17],[6,19],[36,39],[19,-6],[2,11],[17,-9]],[[7118,9769],[37,-6],[-27,-3],[-10,9]],[[7523,9794],[79,-8],[-18,-13],[-55,8],[-6,13]],[[6659,9787],[-27,3],[21,7],[6,-10]],[[7715,9797],[-5,-21],[25,17],[20,0],[24,-16],[-9,-24],[-19,-5],[25,-18],[-39,-10],[-38,4],[-11,8],[-50,2],[-18,12],[-1,14],[-33,3],[29,14],[23,19],[77,1]],[[6585,9810],[-4,-16],[-28,0],[1,14],[31,2]],[[6481,9813],[15,-7],[-35,-6],[20,13]],[[6646,9809],[-52,-12],[-13,20],[42,0],[23,-8]],[[6329,9836],[-38,-20],[-39,11],[77,9]],[[6729,9835],[-5,-10],[-29,-12],[-38,1],[-13,13],[14,11],[65,2],[6,-5]],[[6537,9839],[-13,-8],[-22,8],[35,0]],[[6388,9840],[7,-8],[30,3],[-9,-14],[-60,-9],[4,-14],[-38,-4],[16,15],[-22,8],[63,10],[-18,7],[27,6]],[[7225,9845],[-28,-9],[2,9],[26,0]],[[6560,9854],[57,-11],[-29,-1],[-28,12]],[[6542,9848],[13,2],[47,-13],[-19,-7],[-41,18]],[[6797,9859],[20,-16],[-28,-11],[-36,-3],[-17,9],[46,10],[15,11]],[[7536,9852],[-37,1],[2,7],[38,-2],[-3,-6]],[[7665,9859],[54,-29],[-20,-3],[0,-24],[-75,-6],[-22,-7],[-63,20],[36,9],[15,17],[-22,-3],[16,14],[81,12]],[[6577,9869],[28,-6],[-38,-6],[10,12]],[[6605,9878],[14,-9],[-44,4],[30,5]],[[5846,5121],[2,-14],[5,-5],[3,-11],[1,-26],[-1,-18],[-8,-2]],[[5801,5040],[6,7],[8,22],[-4,17]],[[5821,5103],[7,4],[4,-9],[5,7],[5,16],[4,0]],[[4526,6379],[-1,15],[2,22]],[[6163,6147],[4,4],[4,-6],[-8,2]],[[6345,6826],[6,-29],[6,-11],[0,-14],[11,-4],[-4,-5],[5,-5],[11,-23],[8,-6],[0,-16],[6,-10],[-2,-18],[-4,4],[7,-31],[8,-17],[0,-12],[8,-21]],[[6422,6601],[7,-4],[-5,-9],[8,-8]],[[6443,6277],[-4,-2],[-58,-16],[-17,-4],[-27,-27],[-16,-40],[-3,-19],[-9,-11],[-5,1],[-7,19],[-11,-3],[-25,5],[-5,6],[-16,1],[-15,-5],[-11,0],[-7,10],[-9,-11],[-1,-24],[2,-15],[-11,-16]],[[6188,6126],[-2,21],[-5,8],[0,8],[-6,9],[0,15],[-15,23],[-9,25],[0,8],[-7,16],[-2,14],[-11,49],[-18,29],[-9,3],[-6,13],[-13,43],[3,7],[-7,28],[4,20],[0,19],[-8,23],[0,8],[-14,46],[-18,21],[-2,-3],[-12,35],[3,0],[0,20],[-4,7],[-4,18],[-8,11],[1,11],[-5,5],[-8,30],[-4,7],[-8,26],[-7,15],[-6,24],[-8,14],[-6,-3],[-6,7],[5,20],[4,47]],[[6024,6449],[0,-20],[6,-21],[2,-34],[2,-65],[5,-40],[4,-8],[10,-8],[5,-9],[1,-10],[10,-6],[3,-8]],[[5946,5727],[-6,5],[3,17],[-2,21],[-20,35],[-3,45],[2,5],[2,31],[-13,0],[0,-12],[-18,0],[7,-17],[0,-27],[2,-11],[-14,-24],[-1,-9],[-18,-39],[-13,-4],[-14,23],[-7,8],[-11,-12],[-4,-17],[-13,-9],[-5,-10],[1,-6],[-23,0],[-4,15],[-22,1],[-14,-7],[-11,27],[-8,12],[-2,15],[-21,-7],[-3,-21],[-5,-6],[0,-19],[-3,-6],[-3,-29],[-11,-12]],[[5634,5812],[3,13],[-1,15],[-4,-1],[-7,16],[3,23],[-5,-2],[0,34],[-7,7],[-6,-7],[-5,9],[6,21],[7,14],[-5,25],[4,9],[9,9],[-4,7],[-1,18],[8,6],[0,10],[7,15],[2,15],[-2,11],[7,9],[12,2],[11,-2],[0,218]],[[5943,5426],[-14,-28],[-9,2],[-3,6],[-5,-5],[-13,-3],[-6,-13],[-7,5],[-4,12],[-7,-8],[-11,7],[-8,-17]],[[4535,5893],[-1,42]],[[4540,5965],[-5,11],[-1,13],[-14,41],[-8,3],[11,9],[8,18],[9,33]],[[7884,5266],[4,-3],[-4,-7],[-7,2],[7,8]],[[3953,2073],[22,-4],[11,-7],[17,-21],[3,-11],[-10,-7],[-10,20],[-12,11],[-22,11],[1,8]],[[9445,4521],[15,-17],[-6,0],[-3,9],[-8,4],[2,4]],[[9612,4569],[-6,-12],[-3,7],[9,5]],[[9481,4595],[13,-14],[8,0],[5,-13],[0,-8],[-12,4],[-9,10],[-1,11],[-6,3],[2,7]],[[9483,4641],[4,-12],[0,-10],[-5,7],[1,15]],[[9442,4640],[13,0],[11,-20],[-4,-9],[-10,7],[-13,1],[-6,13],[0,16],[3,2],[6,-10]],[[9388,4691],[3,-9],[-6,0],[3,9]],[[9371,4689],[-5,3],[5,6],[0,-9]],[[9466,4701],[6,-16],[-2,-11],[5,-5],[7,-34],[-14,21],[-3,10],[-5,37],[6,-2]],[[9378,4711],[4,-3],[3,-19],[-7,4],[-2,13],[-9,-2],[-1,6],[6,13],[5,-1],[1,-11]],[[9365,4716],[-5,1],[-1,9],[4,5],[2,-15]],[[9349,4747],[6,-9],[-4,-9],[-5,14],[3,4]],[[9405,4746],[4,0],[9,-16],[12,-12],[9,-15],[1,-13],[-7,12],[-11,9],[-18,25],[-3,13],[4,-3]],[[9349,4800],[13,-15],[3,-16],[10,-7],[-2,-7],[-15,13],[-7,18],[-6,9],[4,5]],[[4650,5621],[2,-12],[-12,10],[10,2]],[[4681,5581],[-6,9],[-23,18],[1,15],[-7,4],[-6,10],[2,3],[-3,18],[-5,-4],[-3,18],[7,1],[-6,7],[0,11],[4,7],[-6,5]],[[2560,5955],[-2,-14],[-12,0],[-13,5],[-14,14],[-14,2],[-8,11]],[[6359,5831],[0,-104],[-27,-84]],[[6201,5844],[18,-44],[13,-18],[15,0],[11,15],[4,0],[10,12],[11,-4],[6,-7],[6,4],[21,25],[8,-5],[14,3],[9,10],[12,-4]],[[6359,5831],[14,5],[4,7],[7,0],[12,7],[13,23],[15,-9],[-5,-19],[-1,-18],[2,-35],[8,-8],[-14,-6],[-3,-53],[-4,-8],[-1,-12],[-6,-10],[-3,-22],[-6,-20],[-8,-13],[0,-11],[-6,-25],[-10,-29],[-4,-29],[-12,-48],[-13,-33],[-7,-26],[-12,-30],[-14,-28],[-10,-24],[-9,-15],[-8,-19],[-21,-26],[-8,-7],[-18,-27],[-8,-17],[-10,-15],[-22,-48],[-11,-21],[-18,-49],[-9,-28]],[[5183,5187],[-3,-2],[-1,13],[5,8],[3,-11],[-4,-8]],[[3409,5499],[3,3],[1,20],[5,7],[8,-2],[20,-10],[2,10],[33,0],[18,-8],[-1,-20],[-3,-8]],[[5626,8009],[-12,-39]],[[5377,7802],[3,6]],[[5474,8485],[-7,-30],[-12,-34],[0,19],[19,45]],[[5521,8514],[8,1],[-8,-14],[-2,-22],[-10,-8],[-5,7],[-1,19],[10,16],[8,1]],[[5327,8537],[-2,-9],[-9,3],[11,6]],[[5671,8973],[-41,-2],[-9,5],[1,-19],[-16,0],[3,-8],[-13,0],[4,-13],[-10,-13],[-4,-15],[12,-15],[-17,-17],[-4,-15],[-13,-13],[-8,1],[-11,-13],[-32,-24],[0,-9],[-17,-3],[5,-11],[-5,-7],[-15,-2],[5,-14],[-5,-29],[-7,-9],[5,-32],[0,-18],[10,-10],[10,4],[14,-25],[9,-2],[6,-19],[-20,-23],[-6,3],[8,-16],[-17,-16],[-18,-13],[-13,-2],[8,-8],[-6,-3],[3,-15],[-10,-16],[6,-8],[0,-17],[-6,-10],[-3,-37],[-3,0],[-6,-23],[-5,-8],[-6,5],[-27,-3],[-11,-14],[-2,-11],[5,-10],[-6,-9],[-11,3],[-10,-5],[-14,2],[4,15],[-14,31],[8,6],[-6,8],[8,2],[-15,26],[-18,47],[4,27],[-4,8],[-9,-4],[-4,9],[-1,39],[6,-6]],[[5891,3637],[-3,2],[-1,-29],[-12,0],[-11,7],[-9,22],[0,24],[7,17],[1,10],[8,11],[14,-15],[2,2]],[[3249,6221],[-2,2]],[[5999,7178],[-3,27],[1,18],[-4,4],[1,20],[3,4]],[[5997,7251],[7,-5],[5,9],[0,11],[9,3],[-4,14],[4,21],[8,-5],[2,-7],[12,0],[5,6],[18,10],[10,-11],[16,-3],[21,8],[20,17],[22,-1],[16,7],[4,7],[4,-12]],[[5402,5930],[5,0],[0,13],[-4,3],[-6,-5],[2,-5]],[[5398,5936],[-1,0]],[[5044,5541],[-12,-7]],[[7728,5654],[6,-7],[0,-10],[-6,-6],[0,23]],[[7840,5883],[5,-11],[-4,1],[-1,10]],[[7858,5853],[-4,22],[-5,11],[-1,-7],[-12,18],[0,8],[-5,0],[-8,10],[-7,-5],[-16,5],[3,15],[-3,7],[4,21],[-11,5],[-15,-8],[-2,-9],[4,-13],[-4,-16],[0,-27],[2,-5],[-7,-15],[0,-11],[-4,-13],[-5,-20],[0,-15],[-9,-32],[2,-7],[-2,-27],[5,-21],[-3,-10],[16,5],[4,-12],[1,-29],[9,-16],[0,-12],[4,-37],[4,-16],[-4,4],[-3,29],[-6,-2],[2,-13],[6,-18],[6,0],[9,-18],[12,1],[6,-4],[6,-21],[7,-12]],[[7780,5554],[-4,13],[-8,12],[2,14],[-6,2],[-5,10],[-2,18],[-7,5],[1,7],[-5,11],[-4,1],[-3,18],[-5,-2],[-2,-12],[-4,5],[-2,18],[2,14],[4,19],[0,16],[3,16],[7,40]],[[6962,7540],[0,0]],[[6882,7324],[1,20],[12,24],[3,15],[-7,12],[-2,14],[4,10],[-2,9],[-12,1],[0,7],[-9,4],[2,16],[8,9],[18,-6],[7,6],[0,11],[8,4],[1,14],[-10,2],[13,4],[7,-3],[1,9],[-4,11],[5,14],[8,-8],[18,14],[5,7],[8,-18],[-11,-19],[7,-10],[9,3]],[[6497,7333],[-3,23],[2,30],[-1,22],[4,15],[-12,17],[0,9],[-11,0],[1,8],[14,2],[-9,14],[6,10],[-5,3],[-14,-3],[-5,6],[0,25],[4,9],[2,19],[4,-11],[13,-1],[5,-8],[16,6],[1,12],[8,-6],[3,14],[-19,23],[-4,34],[-6,5],[-16,-3],[-5,-6],[-5,-17],[4,0],[-3,-19],[-7,9],[-3,13]],[[6554,7562],[29,-5],[4,7],[-4,7],[-2,23],[4,3]],[[6585,7597],[4,-18],[11,-2],[7,14],[-6,6],[0,13]],[[6601,7610],[5,1],[4,19],[7,-2],[-3,10],[11,1],[2,6],[8,-12],[7,-2],[7,-14],[13,2],[5,-8],[-1,-12],[6,-8],[-5,-4],[4,-10],[-3,-10],[11,-11],[18,1],[6,-3],[7,6],[9,-10],[8,-36],[4,-2],[5,-29],[27,-31],[4,-10],[13,-16],[5,2],[10,-14],[27,-29],[7,1],[19,-14],[3,-4],[-4,-9],[0,-25]],[[8444,4645],[12,9]],[[8469,4667],[5,9],[1,10],[20,8],[10,-1],[6,5],[3,-4],[11,10],[11,-6],[-13,-19],[-8,-3],[-4,-9],[-7,-2],[-6,-8],[-10,-3],[-15,-17]],[[130,3966],[6,0],[-1,-7],[-5,7]],[[3308,5807],[-4,-9],[1,-31],[-4,-4],[-14,-1],[-5,4],[10,7],[0,20],[-5,5],[8,7],[13,2]],[[5303,7135],[4,-6],[-9,-6],[0,11],[5,1]],[[5238,7310],[7,2],[10,15],[13,6],[17,-9],[-4,-1],[6,-17],[-5,-4],[10,-3],[14,20],[3,-14],[-10,-23],[-6,-4],[-3,-16],[6,-18],[11,-10],[-1,-16],[3,-7],[-3,-11],[-12,-28],[-14,-14],[-2,-16],[4,-12],[9,-10],[6,4],[0,-13],[11,4],[2,-20],[9,-1]],[[5778,7600],[-2,-9],[6,-15],[20,-17],[6,-2],[-3,-13],[-14,-1],[-9,6],[-6,-7],[-12,1],[-9,-20],[-14,-10],[-15,-24],[2,17],[13,10],[3,7],[-20,-3],[-1,9]],[[5997,7251],[2,5],[-6,17],[12,18],[0,11],[-6,7],[-10,-18],[-8,-3],[-18,15],[-11,-13],[-17,-26],[-7,1],[-17,-8],[-13,9],[-7,18],[-21,18],[-18,5],[-3,-3],[0,-18],[-5,-18],[-4,6],[-13,-10],[-12,5],[-7,9],[0,16],[-7,-1],[-7,9],[-10,3],[-3,-6],[-11,1],[-2,-6],[-9,3],[8,5],[12,0],[-1,7],[8,7],[-15,-3],[-12,2],[-1,8],[7,-2],[-10,13],[0,14],[-5,5],[7,4],[-1,13],[-17,7],[-11,9],[7,6],[-4,14],[4,3],[5,-20],[14,8],[-7,0],[-5,16],[6,2],[3,10],[-6,-2],[0,14],[-6,9],[9,16],[-24,-6],[2,29],[16,25],[16,3],[2,-7],[11,-1],[-1,11],[8,-2],[-2,-7],[11,3],[19,-3],[1,7],[-8,3],[5,6],[27,5],[-15,3],[-11,13],[6,13],[19,-6],[11,5],[15,-8],[9,1],[7,11],[29,28],[14,6],[10,9],[28,-6],[10,0],[10,9],[1,-10],[6,-11],[9,-5],[10,6],[4,-16],[8,-13],[5,8],[12,-5],[0,-6],[13,-8],[8,0],[15,-7],[32,11],[4,-6],[14,-5],[12,7],[24,20],[3,7]],[[8378,6635],[10,-12],[-5,-8],[1,-22],[-6,-18],[-4,-43],[-3,-19],[-6,-20],[-4,-5],[-4,-17],[-1,-27],[-5,7],[-1,16],[-11,20],[-2,22],[-3,0],[2,15],[0,20],[17,58],[3,3],[4,18],[12,7],[2,9],[4,-4]],[[6108,4736],[-7,-14],[1,11],[6,3]],[[6093,4842],[6,-26],[-4,-4],[-7,16],[0,15],[5,-1]],[[6102,4899],[5,-11],[-3,-19],[-2,30]],[[5914,5071],[5,-1],[2,-12],[-9,7],[2,6]],[[5882,5125],[1,0]],[[5883,5125],[1,0]],[[5884,5125],[-1,-28],[-2,0],[-1,-30],[-2,-20],[4,2],[0,-28],[2,8],[4,-3],[0,13],[5,-3],[-3,10],[7,6],[2,-10],[12,-2],[8,5],[3,-7],[17,17],[-2,8],[-4,-6],[-10,4],[5,8],[-3,9],[5,-1],[5,9],[-1,12],[6,0],[-2,7],[8,17]],[[6088,4913],[1,-10],[-4,-16],[-3,-25],[-5,-21],[2,-26],[5,-5],[12,-22],[2,-15],[-4,-5],[-4,-23],[1,-10],[4,-2],[0,-13],[-4,-14],[2,-25],[4,-7],[0,-16],[4,-4],[0,-15],[4,-21],[-2,-8],[15,-16],[5,-14]],[[5971,4516],[-2,9]],[[5969,4527],[-5,7]],[[5964,4536],[-4,14],[2,20],[-2,4],[-1,30],[-7,20]],[[5949,4630],[-3,4]],[[5946,4635],[-4,-2],[-1,-10]],[[5914,4641],[-12,10],[-3,6],[-13,6],[-6,6],[-4,13],[-11,6]],[[5865,4688],[0,10],[-4,5],[-1,11],[-11,36],[1,11],[-3,8],[2,12],[-5,9],[-7,21],[-6,-1],[-6,12],[0,13],[6,7],[-5,32],[1,21],[-6,5],[2,27]],[[5846,5121],[10,4],[26,0]],[[5883,5125],[1,0]],[[5944,5197],[-8,-3],[1,8],[-8,-8],[-3,15],[-5,-3],[-2,-12],[-6,-7],[0,7],[-6,-6],[0,10],[-8,-17],[-9,0],[-4,-9],[3,-7],[-9,-26],[2,-14]],[[5823,5155],[5,6],[2,14],[-6,2]],[[5846,5254],[4,-12],[9,28],[10,11],[3,11],[-1,25],[-3,-9]],[[6061,7895],[-18,0],[-6,-11],[-4,2],[-12,-13],[-4,3],[-22,-8],[-14,-18],[-4,3],[-11,-12],[4,-22],[15,-28],[18,10],[13,-3],[-5,-9],[1,-11],[-17,-4],[-9,7],[-4,-10],[-23,-12],[-12,-18],[-10,-2],[-11,11],[5,5],[1,24],[-8,3],[-11,13],[-9,-2],[-1,8],[24,21],[8,2],[-1,14],[-6,-3],[-5,10],[-3,-6],[-18,-3],[-17,14],[4,8],[-7,6],[17,-5],[4,9],[-11,-4],[-6,5],[-25,-2],[-24,-46],[-5,1],[-10,-23],[4,2],[-3,-14]],[[5836,7853],[9,-17],[2,3],[-11,14]],[[5948,7848],[0,-9],[-11,7],[3,-13],[4,5],[21,-17],[6,-8],[4,-20],[9,-4],[-12,23],[-7,26],[-10,-6],[-7,16]],[[3523,3302],[-5,-5],[0,-12],[-8,-5],[3,-30]],[[3517,3240],[-4,-18],[-7,-13],[0,-7],[-13,-16],[-20,-17],[-12,10],[-14,0],[-7,-8],[-20,15],[-8,13],[-18,-1],[-16,29],[-2,10],[3,27],[-1,10],[9,9],[-4,31]],[[677,6342],[13,-11],[2,-12],[8,-13],[-6,-10],[-16,-13],[-3,-11],[-7,9],[1,15],[-4,25],[5,12],[-1,17],[8,-8]],[[649,6394],[3,-7],[7,2],[8,-8],[0,-7],[-9,-6],[-4,2],[0,10],[-7,7],[2,7]],[[631,6405],[16,-4],[-2,-5],[-15,2],[1,7]],[[613,6427],[6,-8],[1,-12],[-13,2],[-3,14],[7,10],[2,-6]],[[571,6463],[4,-3],[-1,-14],[-8,-3],[-6,11],[11,9]],[[2301,6687],[-6,35],[0,12],[6,-47]],[[2761,6828],[-2,-18],[-2,17],[4,1]],[[2366,6873],[3,-1],[-11,-13],[8,14]],[[1707,7111],[7,-9],[-6,0],[-1,9]],[[1671,7144],[8,-4],[-8,-2],[0,6]],[[2993,7551],[-6,-11],[8,7],[8,-1],[-20,-15],[-36,-12],[-4,1],[4,11],[7,6],[29,6],[10,8]],[[2582,7791],[0,-10],[-7,-17],[-3,8],[10,19]],[[2679,7836],[1,-8],[-10,3],[9,5]],[[2563,7913],[-19,-17],[-6,0],[5,14],[8,6],[12,-3]],[[2541,7956],[-2,-6],[-15,-14],[0,8],[17,12]],[[1595,7969],[-3,-9],[8,-13],[-1,-5],[-9,17],[5,10]],[[1582,8004],[-1,0]],[[2511,7947],[-14,-11],[-19,-11],[-20,-29],[-17,-21],[9,-3],[22,14],[6,0],[-5,-19],[14,-2],[11,5],[7,9],[14,4],[10,7],[7,13],[7,-14],[-1,-10],[10,6],[9,-1],[12,-22],[11,0],[9,-4],[14,14],[18,-2],[13,6],[0,-17],[15,-1]],[[2663,7852],[-3,-10],[9,-12],[-16,1],[-5,4],[-2,-11],[-7,9],[-15,5],[-3,-7],[-25,-7],[-13,0],[-15,-39],[-3,-12],[-10,-17],[2,-8],[10,17],[7,-3],[-11,-49],[1,-13],[-6,-26],[0,-14],[4,-15],[-2,-28],[9,-33],[8,-4],[16,14],[7,22],[5,26],[0,15],[-9,37],[3,10],[-3,17],[8,20],[0,14],[5,15],[7,2],[7,15],[-3,-22],[4,-4],[4,14],[0,16],[11,5],[-3,15],[9,10],[13,-8],[6,-11],[16,-7],[6,-13],[-4,-11],[4,-6],[-1,-28],[-6,-5],[-1,-13],[-7,-2],[-3,-18],[6,-5],[7,6],[6,16],[9,5],[7,-10],[4,-37],[3,-14]],[[2704,7634],[-5,5],[-3,-17],[-6,-8],[-3,-17],[-6,-12],[15,-11],[7,0],[5,-7],[9,4],[14,3],[9,12],[24,15],[26,21],[14,21],[5,2],[-1,17],[-5,3]],[[2804,7674],[10,6],[16,2],[13,-8],[18,0],[8,5],[15,19],[-3,9],[4,4],[-7,11],[15,16],[1,7]],[[3116,7818],[10,-9]],[[3134,7784],[3,-9],[-3,-20],[-20,-16],[-6,5],[-13,-5],[1,-9],[-12,11],[-3,-22],[-14,-14],[-10,3],[-8,-8],[1,-9],[-11,-15],[-6,-22],[1,-15],[5,1],[-13,-19],[9,-7],[5,-23],[17,-8],[-14,-3],[-6,-6],[0,11],[-15,-14],[0,12],[-5,5],[-1,-17],[-12,-9],[-29,-2],[-6,-9],[-8,-1],[-23,-27],[-1,-10],[8,-1],[-2,-29],[-3,-14],[-7,-9],[-1,-11],[-12,-24],[-1,15],[-7,2],[-10,13],[3,-23],[9,-21],[1,-16],[-10,-31],[-7,-13],[-8,-30],[-2,11],[4,20],[6,17],[-6,-2],[1,9],[-13,21],[-1,17],[4,11],[-2,15],[11,15],[-5,0],[-11,-10],[2,-16],[-4,-6],[0,-23],[4,-6],[1,-20],[-9,11],[-8,-2],[9,-4],[11,-13],[-2,-17],[-6,3],[8,-12],[-7,-12],[6,-8],[-4,-8],[12,-4],[5,-35],[7,-23],[-5,9],[-6,38],[-2,-15],[6,-17],[-9,5],[0,-7],[-15,-4],[-2,-6],[15,3],[13,-8],[-1,-17],[-3,2],[-5,-13],[-13,1],[-2,9],[-4,-8],[7,-6],[-2,-11],[-11,-8],[17,-2],[-7,-11],[-15,-4],[-15,-18],[-9,-27],[-11,1],[-13,-12],[-5,-10],[-4,-21],[-22,-32],[-14,-8],[1,-8],[-12,-15],[1,-5],[-11,-14],[-3,-12],[2,-18],[-4,-5],[-3,-19],[8,-63],[9,-38],[9,-26],[-5,0],[0,-10],[18,-75],[3,-31],[-2,-12],[-1,-28],[-4,-11],[-4,-29],[-12,-1],[-7,-4],[0,14],[-6,25],[-6,7],[-6,0],[-3,31],[-6,5],[0,20],[-7,-2],[-6,21],[-3,18],[7,15],[-1,8],[-7,6],[0,-19],[-5,8],[2,21],[4,14],[0,26],[-4,16],[-7,0],[-10,20],[-6,20],[-11,14],[-10,-4],[-10,-15],[-16,-5],[0,7],[-11,20],[-22,14],[-15,-1],[-2,9],[-4,-11],[-14,-5],[-4,7],[-1,16],[-3,2],[-2,-22],[-5,5],[-5,-5],[-10,6],[-14,-7],[-7,-9],[-11,7],[-4,7],[-8,-12],[2,-7],[10,-1],[3,4],[6,-14],[5,12],[3,-3],[-8,-29],[4,-8],[11,-5],[3,-9],[-4,-9],[-3,10],[-15,9],[2,4],[-12,11],[4,-9],[-2,-16],[-10,12],[-8,-14],[-15,9],[0,13],[-7,3],[-3,12],[-6,5],[-9,-8],[4,-6],[-13,-2],[-21,13],[-16,-5],[2,17],[-8,-18],[-17,-13],[-1,19],[-8,-5],[-1,-9],[4,-12],[-8,-12],[1,-4],[-14,-18],[-16,-9],[-12,8],[1,-9],[6,-8],[-7,-6],[-5,6],[1,-12],[-12,-8],[1,-14],[-7,-33],[-3,-26],[7,-32],[1,-16],[3,-1]],[[2245,6713],[1,7],[-9,21]],[[2193,6879],[-7,10]],[[1746,7056],[-4,10],[-2,27],[-8,16],[-15,18],[-6,2],[-3,12],[-9,0],[-10,6],[-10,18],[-21,3],[-9,5],[0,33],[-7,5],[0,12],[-12,15],[-5,18],[-9,13],[-4,23],[5,9],[-3,11],[-6,-1],[-8,13],[-3,21],[3,5],[9,-11],[-10,29],[8,6],[-7,6],[-2,-19],[-16,13],[5,3],[-7,20],[-7,6],[-10,20],[1,10],[-4,16],[2,10],[-2,15],[-7,17],[-8,9],[0,19],[8,15],[-2,17],[3,16],[-2,16],[-5,5],[3,12],[-5,8],[-1,32],[-5,10],[9,41],[4,25],[2,52],[2,11],[1,62],[13,7],[-14,-2],[1,29],[-4,-2],[6,13],[-7,6],[-10,44],[-7,20],[6,11],[15,-11],[24,0],[7,-6],[4,-14],[-9,-15],[12,8],[2,-20],[-7,-10],[2,-4],[10,14],[-1,29],[5,8],[-5,18],[-9,6],[8,12],[-10,16],[1,6]],[[60,8169],[1,-9],[-11,9],[10,0]],[[80,8161],[-11,0],[12,11],[-1,-11]],[[96,8175],[2,-14],[-10,0],[1,14],[7,0]],[[177,8186],[18,-5],[-12,-3],[-15,5],[9,3]],[[162,8200],[5,-4],[-4,-12],[-7,-4],[-27,-2],[22,6],[9,7],[-7,4],[9,5]],[[9827,8206],[-2,-8],[-9,2],[11,6]],[[9802,8235],[12,-10],[-11,-5],[-1,15]],[[332,8268],[5,-12],[-32,-29],[11,24],[7,1],[-1,9],[10,7]],[[367,8291],[6,-8],[9,8],[-9,-15],[8,1],[-14,-16],[-4,1],[-20,-13],[-6,4],[19,9],[1,25],[10,4]],[[391,8303],[7,-5],[-10,-3],[3,8]],[[451,8354],[5,-1],[6,-16],[-8,-9],[-16,0],[-4,-9],[-14,-3],[-3,11],[7,3],[10,16],[3,-2],[14,10]],[[1304,8361],[8,-30],[-14,25],[6,5]],[[558,8363],[-9,-20],[4,19],[5,1]],[[1355,8404],[7,-16],[-1,-16],[-6,-11],[-13,9],[-5,8],[5,20],[13,6]],[[1295,8417],[2,-9],[-14,-4],[5,11],[7,2]],[[1319,8419],[9,-1],[0,-12],[-13,5],[4,8]],[[1289,8428],[10,-1],[4,-16],[13,-7],[9,-30],[9,-9],[-1,-33],[-16,17],[2,8],[-21,10],[8,20],[-11,-1],[6,13],[-3,17],[-9,2],[0,10]],[[1315,8433],[-5,-12],[-6,8],[11,4]],[[1328,8428],[4,-13],[-9,9],[0,12],[5,-8]],[[1308,8454],[9,-14],[-10,-3],[1,17]],[[1278,8457],[7,-4],[1,-11],[-6,-6],[-6,-28],[-3,4],[0,20],[-4,26],[11,-1]],[[1283,8470],[24,-10],[-2,-17],[-9,13],[7,-18],[-16,-4],[0,23],[-10,9],[6,4]],[[745,8475],[8,0],[-14,-10],[6,10]],[[1234,8479],[-1,-12],[-6,-2],[-1,19],[8,-5]],[[1237,8491],[8,2],[9,-14],[7,-29],[-1,-30],[-5,0],[-13,33],[-1,15],[-10,18],[6,5]],[[749,8519],[11,0],[7,-8],[-2,-10],[8,0],[-4,-10],[-18,4],[10,-7],[-18,-9],[-14,-22],[-10,-6],[6,10],[-12,-1],[-12,22],[3,14],[7,7],[10,0],[7,-19],[-4,28],[5,5],[16,-5],[-3,10],[7,-3]],[[1229,8536],[23,-12],[-1,-13],[-7,-1],[-18,12],[14,-15],[13,1],[1,-16],[-7,0],[-19,17],[7,-17],[-4,-6],[-8,6],[-1,10],[-12,12],[1,20],[18,2]],[[1252,8544],[6,-11],[14,-6],[8,-16],[-2,-5],[2,-21],[-19,-19],[-1,12],[4,10],[-5,13],[-7,43]],[[761,8550],[18,-11],[-6,-8],[-18,-4],[-10,2],[1,9],[10,1],[5,11]],[[913,8659],[5,-3],[-25,-29],[20,32]],[[385,8661],[13,-6],[2,-22],[-19,-5],[-10,2],[-19,13],[-4,7],[16,0],[9,9],[12,2]],[[929,8665],[13,-4],[-15,-9],[2,13]],[[897,8667],[-2,-19],[-4,10],[6,9]],[[231,8857],[0,-6],[17,-7],[20,7],[23,-20],[21,-2],[-2,-9],[-15,1],[-9,-13],[-3,10],[-28,19],[-17,-8],[-13,10],[6,18]],[[1387,8402],[-3,-8],[4,-28],[-10,-21],[-9,-8],[-7,2],[-3,23],[6,6],[-1,24],[-15,16],[-8,-7],[-7,-22],[-9,13],[7,4],[5,24],[-18,22],[-11,25],[-19,8],[12,9],[-11,10],[-3,12],[14,-6],[-15,12],[-15,23],[-16,11],[-4,24],[-6,1],[-1,17],[-6,-11],[7,-17],[1,-24],[-13,11],[-8,-2],[2,13],[-8,12],[-3,-4],[-17,8],[19,-18],[2,-12],[-9,-4],[-20,5],[-23,23],[-9,16],[-34,19],[-11,9],[12,10],[-5,11],[-18,-12],[-9,0],[-21,9],[3,11],[-13,-5],[-31,8],[-30,-6],[-12,12],[-16,5],[3,18],[-11,-14],[-21,5],[9,13],[-18,-1],[-16,19],[-12,1],[-2,-7],[-15,-3],[-3,6],[9,19],[-17,-18],[2,-20],[8,-8],[-6,-3],[-8,-27],[-18,1],[-5,-5],[-2,13],[-12,-25],[-13,3],[-7,-13],[-19,-17],[-16,-2],[-6,6],[3,9],[19,10],[2,8],[-11,-6],[-10,7],[4,16],[8,10],[5,19],[-5,8],[27,21],[6,-6],[18,3],[-14,10],[4,5],[-19,4],[-15,-15],[-9,-2],[-20,-27],[-7,-16],[-11,-2],[9,-10],[-18,-24],[-11,0],[-4,-11],[-9,-5],[-3,-20],[10,3],[13,-8],[2,-6],[-11,-12],[-5,0],[-14,-31],[-4,7],[-2,-11],[-12,1],[-9,-17],[-9,2],[-2,-13],[-10,-1],[-14,-15],[7,-5],[-7,-12],[-5,4],[-12,-16],[-17,-5],[-2,-11],[-13,-1],[-4,-8],[7,-10],[-10,-4],[-1,-7],[-22,-6],[-5,-17],[-6,16],[-20,-21],[-10,2],[-12,-10],[-5,2],[6,12],[-10,1],[-6,-22],[-9,-11],[-12,8],[-4,-14],[-7,2],[-9,-9],[0,18],[10,3],[22,30],[12,12],[9,3],[34,-7],[-10,9],[5,17],[16,15],[24,17],[9,-4],[-1,15],[10,16],[18,15],[2,46],[12,18],[5,16],[-8,-7],[-25,-13],[-11,12],[1,10],[-9,-10],[4,-20],[-11,-2],[-14,29],[-8,-10],[-12,17],[-19,-11],[-20,-18],[-11,4],[11,7],[-1,13],[6,7],[-12,2],[0,15],[7,6],[-20,46],[-1,-17],[-16,-8],[-23,-4],[-9,6],[-13,23],[-19,12],[20,19],[18,-3],[7,-12],[9,7],[-4,7],[-29,2],[-20,20],[-7,-6],[-9,14],[0,21],[-6,7],[15,2],[-4,13],[18,26],[8,-3],[-3,14],[5,17],[11,0],[-8,7],[7,5],[17,0],[2,-11],[17,1],[20,24],[25,-1],[18,17],[-6,30],[-13,9],[10,4],[9,13],[-10,12],[-41,-24],[-17,-5],[-12,9],[-18,0],[-19,-8],[-33,8],[-8,6],[3,12],[-11,10],[7,9],[13,2],[-38,8],[-18,10],[37,28],[24,9],[16,13],[16,7],[29,2],[-7,-11],[7,-19],[26,2],[24,-8],[11,18],[13,-3],[-13,10],[-11,-2],[-2,11],[-15,10],[-5,9],[9,3],[7,-17],[12,-11],[10,4],[14,-9],[16,2],[-3,14],[-23,0],[-9,-7],[-10,10],[2,20],[-23,-2],[-30,5],[-10,27],[-34,25],[-20,9],[-16,11],[9,17],[0,14],[16,-2],[37,4],[19,11],[15,16],[2,19],[29,33],[26,0],[45,27],[39,4],[21,14],[12,13],[33,-7],[-12,-12],[11,-6],[16,16],[13,-7],[2,-12],[19,5],[38,-1],[9,-4],[-12,-15],[24,0],[-6,-6],[32,3],[11,-5],[30,5],[31,-8],[27,-11],[40,0],[30,-12],[40,9],[52,-27],[12,0]],[[2912,6333],[-2,-4]],[[2914,6329],[-1,4]],[[6651,7782],[-7,-26],[12,-19],[-3,-12],[11,5],[3,8],[-2,16],[3,11]],[[6601,7610],[-7,11],[-5,-2],[-4,-22]],[[6627,7805],[-10,-35],[2,-18],[4,-10],[9,17],[-3,20],[3,6],[-1,16]],[[3301,5940],[-4,4],[5,8],[-1,-12]],[[3313,5694],[1,-6],[-5,-8],[-9,-2],[1,7],[12,9]],[[3303,5691],[4,12],[2,-5],[-6,-7]],[[3228,5816],[-8,-8],[-9,6],[4,7],[6,-5],[4,10],[3,-10]],[[3018,5865],[-3,-7],[-14,-7],[0,-13],[10,-38],[-1,-16],[-4,-6],[-10,-30],[5,-18],[6,-7],[-1,-15],[6,-5],[9,7],[5,10],[-1,32],[-11,30],[-2,23],[3,10],[4,0],[12,13],[18,8],[5,9],[8,-2],[-2,13],[-11,-5],[-2,13],[2,16],[5,5],[6,-10],[2,-22],[4,-10],[12,3],[15,-10],[7,-12],[4,-15],[-2,-7],[5,-15],[8,-1],[17,4],[6,4],[21,2],[11,-20],[11,-9],[11,-5],[8,2],[4,9],[5,0],[2,8],[20,5],[-5,5],[-9,1],[10,6],[7,-3],[11,6],[12,1],[16,-4],[8,4],[-2,-6],[-10,-6],[-16,0],[1,-9],[5,-5],[1,-12],[-9,-1],[5,-4],[8,8],[5,-25],[2,17],[11,-10],[7,-3],[-2,7],[13,-19],[4,1],[7,-12],[-9,-24],[-3,-22],[-12,0],[10,-11],[3,6],[14,6],[6,-4],[3,6],[9,-4]],[[7888,5785],[0,-17],[-4,12],[4,5]],[[7999,6420],[-7,1],[-4,-12],[-7,-3],[1,-12],[-6,-6],[-5,4],[-9,-2],[4,-16],[-8,-8],[2,-17],[-7,-4],[-4,-11],[-7,-4],[-3,-15],[-1,-23],[-5,-13],[7,-30],[7,-15],[11,-17],[-1,-15],[8,-21],[9,-14],[4,-12],[16,-29],[6,-2],[16,-47],[8,-11],[1,-21],[5,-18],[-2,-5],[6,-25],[0,-35],[2,-3],[0,-23],[3,-13],[-6,-10],[0,-42],[-3,-5],[4,-7],[-4,-10],[-2,4],[0,-16],[-7,-2],[-2,-8],[-4,0],[-8,-14],[-6,-1],[-2,-13],[-5,0],[-11,-13],[-13,0],[-5,12],[1,-23],[-11,2],[11,-9],[-4,-11],[-6,4],[7,-11],[-3,-2],[-12,24],[0,-5],[10,-18],[2,-11],[-5,-6],[-10,15],[4,-19],[-1,-6],[-17,-13],[-12,-29],[-11,-2],[5,9],[-2,10],[0,36],[2,17],[6,7],[-10,15],[-5,-5],[-3,16]],[[9706,4050],[-7,13],[4,7],[3,-20]],[[9699,4104],[2,-14],[-8,6],[0,12],[6,-4]],[[9675,4172],[7,-8],[-6,-8],[-6,7],[5,9]],[[9671,4228],[8,-15],[-7,1],[-1,14]],[[9675,4243],[-6,-2],[-6,7],[7,9],[5,-14]],[[9650,4255],[10,-14],[1,-7],[-10,-6],[-4,27],[-5,1],[1,12],[4,-1],[3,-12]],[[9672,4262],[-3,21],[1,9],[3,-20],[-1,-10]],[[9662,4292],[-5,2],[9,9],[-4,-11]],[[9671,4298],[-2,1],[-1,24],[2,-2],[1,-23]],[[9633,4310],[4,2],[0,11],[5,-11],[3,-23],[-11,-7],[-7,15],[1,11],[-3,15],[1,17],[5,-11],[2,-19]],[[9653,4368],[1,-9],[-5,0],[4,9]],[[9654,4385],[-4,-3],[-1,10],[5,-7]],[[5917,7177],[-8,1]],[[233,4380],[5,-6],[-14,2],[-4,7],[7,5],[6,-8]],[[213,4406],[3,-6],[-1,-12],[-9,0],[-5,15],[12,3]],[[6488,5914],[7,-6],[7,6],[10,-9],[-9,-11],[-10,-3],[-6,2],[-5,12],[6,9]],[[6474,6141],[-14,-9],[-10,-18],[-2,-12],[2,-20],[-10,-7],[-13,-15],[-23,-11],[-11,-11],[-4,0],[-25,-18],[-3,-12],[-8,-16],[-6,-3],[-14,3],[-10,-9],[-6,-13],[-15,-8],[-5,-6],[-14,0],[-16,-6],[-7,-15],[-15,-17],[-7,3],[-4,-8],[-14,-5],[-10,9],[-3,-4],[-7,35],[2,25],[-6,21],[-2,16],[-3,43],[-6,7],[4,2],[-3,17],[3,18],[-1,29]],[[5913,3637],[-1,-16],[-5,-23],[-3,-38],[-5,-21],[-10,-19],[-7,-3],[-13,-27],[-21,-68],[-4,-16],[-15,-32],[-4,-4],[-16,-28],[-9,-21],[-13,-22],[-25,-35],[-27,-26],[-15,4],[-9,-9],[0,-11],[-17,5],[-4,-12],[-11,1],[-8,6],[-16,4],[-6,-7],[-23,6],[-10,-4],[-12,-19],[-7,3],[-6,-5],[-11,4],[-1,-6],[-11,0],[-14,-20],[-9,3],[-9,9],[0,11],[-6,4],[-8,-2],[0,17],[-10,-2],[0,-13],[-4,19],[5,10],[-2,12],[-7,16],[-4,20],[-4,-1],[1,18],[7,-2],[4,8],[1,20],[-2,22],[-4,17],[-9,20],[-7,28],[-8,24],[-6,42],[-6,29],[-7,15],[-3,15]],[[5815,3905],[12,3],[14,-12],[15,3],[13,-7]],[[5844,4282],[-15,1],[-13,-5],[-15,-18],[0,-21],[-3,-8]],[[5798,4231],[-3,3],[-13,-9],[-5,-13],[-12,-14],[-13,-38],[-2,-11]],[[5750,4149],[-9,-7],[-14,11],[-7,-7],[-7,11],[-12,1]],[[5792,4643],[5,5],[9,23],[3,15],[-7,8]],[[5849,4709],[-4,-14],[7,-1],[9,-18],[5,4],[-1,8]],[[5750,4149],[10,22],[5,5],[4,17],[11,9],[0,11],[8,0],[8,9],[1,-7],[8,12],[-7,4]]],"type":"Topology","objects":{"units":{"geometries":[{"arcs":[[0,1,2,3,4,5]],"type":"Polygon","id":"AFG","properties":{"name":"Afghanistan"}},{"arcs":[[[6,7,8,9]],[[10,11,12]]],"type":"MultiPolygon","id":"AGO","properties":{"name":"Angola"}},{"arcs":[[[13,14]],[[15,16]],[[17,18,19,20,21,22,23,24,25,26,27,28,29,30]]],"type":"MultiPolygon","id":"ALB","properties":{"name":"Albania"}},{"arcs":[[[31]]],"type":"MultiPolygon","id":"ALD","properties":{"name":"Aland"}},{"arcs":[[32,33]],"type":"Polygon","id":"AND","properties":{"name":"Andorra"}},{"arcs":[[[34]],[[35,36,37,38,39],[40]]],"type":"MultiPolygon","id":"ARE","properties":{"name":"United Arab Emirates"}},{"arcs":[[[41,42]],[[43,44]],[[45,46,47,48,49,50]]],"type":"MultiPolygon","id":"ARG","properties":{"name":"Argentina"}},{"arcs":[[[51]],[[52,53,54,55,56],[57],[58]]],"type":"MultiPolygon","id":"ARM","properties":{"name":"Armenia"}},{"arcs":[[[59]],[[60]],[[61]],[[62]],[[63]],[[64]],[[65]],[[66]],[[67]],[[68]],[[69]],[[70]],[[71]],[[72]],[[73]],[[74]],[[75]],[[76]],[[77]],[[78]],[[79]],[[80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90]],[[91]],[[92]],[[93]],[[94]],[[95]],[[96]],[[97]],[[98]],[[99]],[[100]],[[101]],[[102]],[[103]],[[104]],[[105]],[[106]],[[107]],[[108]],[[109]],[[110]],[[111]],[[112]],[[113]],[[114]],[[115]],[[116]],[[117]],[[118]],[[119]],[[120]]],"type":"MultiPolygon","id":"ATA","properties":{"name":"Antarctica"}},{"arcs":[[[121]]],"type":"MultiPolygon","id":"ATF","properties":{"name":"Fr. S. Antarctic Lands"}},{"arcs":[[[122]],[[123]],[[124]],[[125]],[[126]],[[127]],[[128]],[[129]],[[130]],[[131]],[[132]],[[133]],[[134]],[[135]],[[136]],[[137]],[[138]],[[139]],[[140]]],"type":"MultiPolygon","id":"AUS","properties":{"name":"Australia"}},{"arcs":[[141,142,143,144,145,146,147,148,149,150]],"type":"Polygon","id":"AUT","properties":{"name":"Austria"}},{"arcs":[[[151,152,-55]],[[-59]],[[-58]],[[153,154,155,-53,156],[-52]]],"type":"MultiPolygon","id":"AZE","properties":{"name":"Azerbaijan"}},{"arcs":[[157,158,159,160]],"type":"Polygon","id":"BDI","properties":{"name":"Burundi"}},{"arcs":[[161,162,163,164,165,166,167]],"type":"Polygon","id":"BEL","properties":{"name":"Belgium"}},{"arcs":[[168,169,170,171,172]],"type":"Polygon","id":"BEN","properties":{"name":"Benin"}},{"arcs":[[173,-172,174,175,176,177]],"type":"Polygon","id":"BFA","properties":{"name":"Burkina Faso"}},{"arcs":[[[178]],[[179]],[[180,181,182]]],"type":"MultiPolygon","id":"BGD","properties":{"name":"Bangladesh"}},{"arcs":[[183,184,185,186,187,188]],"type":"Polygon","id":"BGR","properties":{"name":"Bulgaria"}},{"arcs":[[189]],"type":"Polygon","id":"BHR","properties":{"name":"Bahrain"}},{"arcs":[[[190]],[[191]],[[192]],[[193]],[[194]],[[195]],[[196]],[[197]],[[198]],[[199]],[[200]]],"type":"MultiPolygon","id":"BHS","properties":{"name":"Bahamas"}},{"arcs":[[201,202,203,204,205]],"type":"Polygon","id":"BIH","properties":{"name":"Bosnia and Herz."}},{"arcs":[[206,207,208,209,210]],"type":"Polygon","id":"BLR","properties":{"name":"Belarus"}},{"arcs":[[[211,212,213]]],"type":"MultiPolygon","id":"BLZ","properties":{"name":"Belize"}},{"arcs":[[[214,215]],[[216,-51,217,218,219,220,221]]],"type":"MultiPolygon","id":"BOL","properties":{"name":"Bolivia"}},{"arcs":[[[222]],[[223]],[[224]],[[225]],[[226]],[[227]],[[228]],[[229]],[[230]],[[231]],[[232]],[[233]],[[234]],[[235]],[[236]],[[237]],[[238,239,240,241,242,243,-47,244,245,246,-222,247,248,249,250]]],"type":"MultiPolygon","id":"BRA","properties":{"name":"Brazil"}},{"arcs":[[251]],"type":"Polygon","id":"BRB","properties":{"name":"Barbados"}},{"arcs":[[[252,253]],[[254,255]]],"type":"MultiPolygon","id":"BRN","properties":{"name":"Brunei"}},{"arcs":[[256,257]],"type":"Polygon","id":"BTN","properties":{"name":"Bhutan"}},{"arcs":[[258,259,260]],"type":"Polygon","id":"BWA","properties":{"name":"Botswana"}},{"arcs":[[261,262,263,264,265,266]],"type":"Polygon","id":"CAF","properties":{"name":"Central African Rep."}},{"arcs":[[[267]],[[268]],[[269]],[[270]],[[271]],[[272]],[[273]],[[274,275,276,277]],[[278]],[[279]],[[280]],[[281]],[[282]],[[283]],[[284]],[[285]],[[286]],[[287]],[[288]],[[289]],[[290]],[[291]],[[292]],[[293]],[[294]],[[295]],[[296]],[[297]],[[298]],[[299]],[[300]],[[301]],[[302]],[[303]],[[304]],[[305]],[[306]],[[307]],[[308]],[[309]],[[310]],[[311]],[[312]],[[313]],[[314]],[[315]],[[316]],[[317]],[[318]],[[319]],[[320]],[[321]],[[322]],[[323]],[[324]],[[325]],[[326]],[[327]],[[328]],[[329]],[[330]],[[331]],[[332]],[[333,334,335,336,337,338,339,340,341,342,343,344,345,-346,346,347]],[[348]],[[349]],[[350]],[[351]],[[352]],[[353]],[[354]],[[355]],[[356]],[[357]],[[358]],[[359]],[[360]],[[361]],[[362]],[[363]],[[364]],[[365]],[[366]],[[367]],[[368]],[[369]],[[370]],[[371]],[[372]],[[373]],[[374]],[[375]],[[376]],[[377]],[[378]],[[379]],[[380]],[[381]],[[382]],[[383]],[[384]]],"type":"MultiPolygon","id":"CAN","properties":{"name":"Canada"}},{"arcs":[[385,386,387,-148,388,-146,389,390,391,392,393]],"type":"Polygon","id":"CHE","properties":{"name":"Switzerland"}},{"arcs":[[[394]],[[395]],[[396]],[[397]],[[398]],[[399]],[[400]],[[401]],[[402]],[[-44,403,-42,404]],[[405]],[[406]],[[407]],[[408]],[[409]],[[410]],[[411]],[[412]],[[413]],[[414]],[[415]],[[416]],[[417]],[[418]],[[419]],[[420]],[[421]],[[422]],[[423]],[[424]],[[425]],[[426]],[[427]],[[428]],[[429]],[[430]],[[431]],[[432]],[[433]],[[434]],[[435]],[[-50,436,437,-218]]],"type":"MultiPolygon","id":"CHL","properties":{"name":"Chile"}},{"arcs":[[[438]],[[439]],[[440]],[[441]],[[442,443,444,445,446,447,448,449,450,451,-258,452,453,454,455,456,-1,457,458,459,460,461,462,463,464]]],"type":"MultiPolygon","id":"CHN","properties":{"name":"China"}},{"arcs":[[[465,466]],[[-177,467,468,469,470,471]]],"type":"MultiPolygon","id":"CIV","properties":{"name":"C\u00f4te d'Ivoire"}},{"arcs":[[[472,-266,473,474,475,476,477,478,479]],[[480,481]]],"type":"MultiPolygon","id":"CMR","properties":{"name":"Cameroon"}},{"arcs":[[[482,483,484,485]],[[486,487,488,489]],[[490,491,492,493]]],"type":"MultiPolygon","id":"CNM","properties":{"name":"Cyprus U.N. Buffer Zone"}},{"arcs":[[[494]],[[495,496,497,498,499,500,501,502,503,-160,504,505,506,507,-10,508,-11,509,-264]]],"type":"MultiPolygon","id":"COD","properties":{"name":"Dem. Rep. Congo"}},{"arcs":[[-510,-13,510,511,-474,-265]],"type":"Polygon","id":"COG","properties":{"name":"Congo"}},{"arcs":[[[512,-249,513,514,515,516,517]]],"type":"MultiPolygon","id":"COL","properties":{"name":"Colombia"}},{"arcs":[[[518]],[[519]]],"type":"MultiPolygon","id":"COM","properties":{"name":"Comoros"}},{"arcs":[[[520]],[[521]],[[522]],[[523]]],"type":"MultiPolygon","id":"CPV","properties":{"name":"Cape Verde"}},{"arcs":[[[524,525,526,527]]],"type":"MultiPolygon","id":"CRI","properties":{"name":"Costa Rica"}},{"arcs":[[[528]],[[529]],[[530]],[[531,532,533,534]]],"type":"MultiPolygon","id":"CUB","properties":{"name":"Cuba"}},{"arcs":[[535]],"type":"Polygon","id":"CUW","properties":{"name":"Cura\u00e7ao"}},{"arcs":[[[536,-488]],[[-486,537,-494,538]]],"type":"MultiPolygon","id":"CYN","properties":{"name":"N. Cyprus"}},{"arcs":[[[539,540]],[[541]],[[542,543,-484]],[[544,545,546,547,-490,548,-492]]],"type":"MultiPolygon","id":"CYP","properties":{"name":"Cyprus"}},{"arcs":[[549,550,-151,551]],"type":"Polygon","id":"CZE","properties":{"name":"Czech Rep."}},{"arcs":[[[-387,552]],[[553,554]],[[555]],[[556,557,-552,-150,558,-394,559,560,-162,561,562,563]]],"type":"MultiPolygon","id":"DEU","properties":{"name":"Germany"}},{"arcs":[[564,565,566,567,568,569]],"type":"Polygon","id":"DJI","properties":{"name":"Djibouti"}},{"arcs":[[570]],"type":"Polygon","id":"DMA","properties":{"name":"Dominica"}},{"arcs":[[[571]],[[572]],[[573]],[[574]],[[575]],[[576]],[[577]],[[-564,578]]],"type":"MultiPolygon","id":"DNK","properties":{"name":"Denmark"}},{"arcs":[[[579,580,581,582,583,584]]],"type":"MultiPolygon","id":"DOM","properties":{"name":"Dominican Rep."}},{"arcs":[[585,586,587,588,589,590,591,592]],"type":"Polygon","id":"DZA","properties":{"name":"Algeria"}},{"arcs":[[[593]],[[594]],[[595]],[[596]],[[597]],[[598]],[[599,600,-515]]],"type":"MultiPolygon","id":"ECU","properties":{"name":"Ecuador"}},{"arcs":[[[601,602,603,604,605,606]]],"type":"MultiPolygon","id":"EGY","properties":{"name":"Egypt"}},{"arcs":[[[607]],[[-569,608,609,610]]],"type":"MultiPolygon","id":"ERI","properties":{"name":"Eritrea"}},{"arcs":[[-485,-544,611,-541,612,-545,-491,-538],[-542]],"type":"Polygon","id":"ESB","properties":{"name":"Dhekelia"}},{"arcs":[[[613]],[[614]],[[615]],[[616]],[[617]],[[618]],[[619,620]],[[621,622]],[[623]],[[624]],[[625]],[[626]],[[627,-33,628,629,630,631,632,633]]],"type":"MultiPolygon","id":"ESP","properties":{"name":"Spain"}},{"arcs":[[[634]],[[635]],[[636,637,638,639,640,641,642,643,644]]],"type":"MultiPolygon","id":"EST","properties":{"name":"Estonia"}},{"arcs":[[-568,645,-566,646,647,648,649,650,-609]],"type":"Polygon","id":"ETH","properties":{"name":"Ethiopia"}},{"arcs":[[[651]],[[652,653,654,655]]],"type":"MultiPolygon","id":"FIN","properties":{"name":"Finland"}},{"arcs":[[[656]],[[657]],[[658]]],"type":"MultiPolygon","id":"FJI","properties":{"name":"Fiji"}},{"arcs":[[[659]],[[660]]],"type":"MultiPolygon","id":"FLK","properties":{"name":"Falkland Is."}},{"arcs":[[[661]],[[662]],[[-240,663,664]],[[665]],[[666]],[[667]],[[668]],[[669,-560,-393,670,-391,671,672,673,674,-629,-34,-628,675,-164],[-627]]],"type":"MultiPolygon","id":"FRA","properties":{"name":"France"}},{"arcs":[[[676]],[[677]]],"type":"MultiPolygon","id":"FRO","properties":{"name":"Faeroe Is."}},{"arcs":[[[678]]],"type":"MultiPolygon","id":"FSM","properties":{"name":"Micronesia"}},{"arcs":[[[-512,679,680,-475]]],"type":"MultiPolygon","id":"GAB","properties":{"name":"Gabon"}},{"arcs":[[[681]],[[682]],[[683,684]],[[685]],[[686]],[[687]],[[688]],[[689]],[[690]],[[691]],[[692]],[[693]],[[694]],[[695]]],"type":"MultiPolygon","id":"GBR","properties":{"name":"United Kingdom"}},{"arcs":[[-157,-57,696,697,698]],"type":"Polygon","id":"GEO","properties":{"name":"Georgia"}},{"arcs":[[699,700,-466,701,-468,-176]],"type":"Polygon","id":"GHA","properties":{"name":"Ghana"}},{"arcs":[[-631,702]],"type":"Polygon","id":"GIB","properties":{"name":"Gibraltar"}},{"arcs":[[703,-471,704,705,706,707,708]],"type":"Polygon","id":"GIN","properties":{"name":"Guinea"}},{"arcs":[[709,710]],"type":"Polygon","id":"GMB","properties":{"name":"Gambia"}},{"arcs":[[[711]],[[712,713,-708]]],"type":"MultiPolygon","id":"GNB","properties":{"name":"Guinea-Bissau"}},{"arcs":[[[-681,714,-476]],[[715]]],"type":"MultiPolygon","id":"GNQ","properties":{"name":"Eq. Guinea"}},{"arcs":[[[716]],[[717]],[[718]],[[719]],[[720]],[[721]],[[722]],[[723]],[[724]],[[725]],[[726]],[[727]],[[728]],[[729]],[[730]],[[731]],[[732,-186,733,734,-27,735,-25,736]]],"type":"MultiPolygon","id":"GRC","properties":{"name":"Greece"}},{"arcs":[[[737]]],"type":"MultiPolygon","id":"GRD","properties":{"name":"Grenada"}},{"arcs":[[[738]],[[739]],[[740]],[[741]],[[742]],[[743]],[[744]],[[745]],[[746]],[[747]],[[748]],[[749]],[[750]],[[751]],[[752]],[[753]],[[754]],[[755]],[[756]],[[757]],[[758]],[[759]],[[760]],[[761]],[[762]],[[763]]],"type":"MultiPolygon","id":"GRL","properties":{"name":"Greenland"}},{"arcs":[[-213,764,765,766,767,768]],"type":"Polygon","id":"GTM","properties":{"name":"Guatemala"}},{"arcs":[[769]],"type":"Polygon","id":"GUM","properties":{"name":"Guam"}},{"arcs":[[[770,-251,771,772]]],"type":"MultiPolygon","id":"GUY","properties":{"name":"Guyana"}},{"arcs":[[[773,-447]]],"type":"MultiPolygon","id":"HKG","properties":{"name":"Hong Kong"}},{"arcs":[[774]],"type":"Polygon","id":"HMD","properties":{"name":"Heard I. and McDonald Is."}},{"arcs":[[[775,776,777,-766,778]]],"type":"MultiPolygon","id":"HND","properties":{"name":"Honduras"}},{"arcs":[[[-204,779,780]],[[781]],[[782]],[[783]],[[784]],[[785,786,-206,787,788]]],"type":"MultiPolygon","id":"HRV","properties":{"name":"Croatia"}},{"arcs":[[[-582,789]],[[790]],[[-584,791,-580,792]]],"type":"MultiPolygon","id":"HTI","properties":{"name":"Haiti"}},{"arcs":[[793,794,795,-786,796,-143,797]],"type":"Polygon","id":"HUN","properties":{"name":"Hungary"}},{"arcs":[[[798]],[[799]],[[800]],[[801,802,803,804]],[[805]],[[806]],[[807]],[[808]],[[809]],[[810]],[[811]],[[812]],[[813]],[[814]],[[815]],[[816]],[[817]],[[818]],[[819]],[[820]],[[821]],[[822]],[[823]],[[824]],[[825]],[[826]],[[827]],[[828]],[[829]],[[830]],[[831]],[[832]],[[833]],[[834]],[[835]],[[836]],[[837]],[[838]],[[839]],[[840]],[[841]],[[842]],[[843]],[[844]],[[845]],[[846]],[[847]],[[848]],[[849]],[[850]],[[851]],[[852]],[[853]],[[854]],[[855]],[[856]],[[857,858]],[[859]],[[860]],[[861]],[[862]],[[863]],[[864]],[[865]],[[866]],[[867]],[[868]],[[869]],[[870]],[[871]],[[872]],[[873]],[[874]],[[875]],[[876]],[[877]],[[878]],[[879]],[[880]],[[881,882]],[[883]],[[884,885]],[[886]],[[887]]],"type":"MultiPolygon","id":"IDN","properties":{"name":"Indonesia"}},{"arcs":[[888]],"type":"Polygon","id":"IMN","properties":{"name":"Isle of Man"}},{"arcs":[[[889]],[[890]],[[891]],[[892]],[[893,-453,-257,-452,894,-183,895,896,897,-455]]],"type":"MultiPolygon","id":"IND","properties":{"name":"India"}},{"arcs":[[[-684,898]]],"type":"MultiPolygon","id":"IRL","properties":{"name":"Ireland"}},{"arcs":[[[899]],[[-54,-156,900,901,-3,902,903,904,905,-152]]],"type":"MultiPolygon","id":"IRN","properties":{"name":"Iran"}},{"arcs":[[-905,906,907,908,909,910,911,912,913]],"type":"Polygon","id":"IRQ","properties":{"name":"Iraq"}},{"arcs":[[[914]]],"type":"MultiPolygon","id":"ISL","properties":{"name":"Iceland"}},{"arcs":[[915,916,917,918,919,920,921,-603,922,923,924,925]],"type":"Polygon","id":"ISR","properties":{"name":"Israel"}},{"arcs":[[[926]],[[927]],[[928,929,-672,-390,-145],[930],[931]]],"type":"MultiPolygon","id":"ITA","properties":{"name":"Italy"}},{"arcs":[[932]],"type":"Polygon","id":"JAM","properties":{"name":"Jamaica"}},{"arcs":[[933,934,-921,935,-919,936,937,-916,938,-910]],"type":"Polygon","id":"JOR","properties":{"name":"Jordan"}},{"arcs":[[[939]],[[940]],[[941]],[[942]],[[943]],[[944]],[[945]],[[946]],[[947]],[[948]],[[949]],[[950]],[[951]]],"type":"MultiPolygon","id":"JPN","properties":{"name":"Japan"}},{"arcs":[[952]],"type":"Polygon","id":"KAB","properties":{"name":"Baikonur"}},{"arcs":[[-898,953,-456]],"type":"Polygon","id":"KAS","properties":{"name":"Siachen Glacier"}},{"arcs":[[[954,955]],[[-460,956,957,958,959,960,961,962],[-953]]],"type":"MultiPolygon","id":"KAZ","properties":{"name":"Kazakhstan"}},{"arcs":[[[-649,963,964,965,966,967,968]]],"type":"MultiPolygon","id":"KEN","properties":{"name":"Kenya"}},{"arcs":[[-459,969,970,-957],[971],[972],[973]],"type":"Polygon","id":"KGZ","properties":{"name":"Kyrgyzstan"}},{"arcs":[[[974,975,976,977]]],"type":"MultiPolygon","id":"KHM","properties":{"name":"Cambodia"}},{"arcs":[[[978]]],"type":"MultiPolygon","id":"KIR","properties":{"name":"Kiribati"}},{"arcs":[[[979]],[[980]],[[981]],[[982,983]]],"type":"MultiPolygon","id":"KOR","properties":{"name":"Korea"}},{"arcs":[[984,-18,985,986]],"type":"Polygon","id":"XKX","properties":{"name":"Kosovo"}},{"arcs":[[[987]],[[988,-908,989]]],"type":"MultiPolygon","id":"KWT","properties":{"name":"Kuwait"}},{"arcs":[[990,-977,991,992,-450]],"type":"Polygon","id":"LAO","properties":{"name":"Lao PDR"}},{"arcs":[[-925,993,994]],"type":"Polygon","id":"LBN","properties":{"name":"Lebanon"}},{"arcs":[[-470,995,996,-705]],"type":"Polygon","id":"LBR","properties":{"name":"Liberia"}},{"arcs":[[-606,997,998,999,-587,1000,1001]],"type":"Polygon","id":"LBY","properties":{"name":"Libya"}},{"arcs":[[1002]],"type":"Polygon","id":"LCA","properties":{"name":"Saint Lucia"}},{"arcs":[[-389,-147]],"type":"Polygon","id":"LIE","properties":{"name":"Liechtenstein"}},{"arcs":[[[1003]]],"type":"MultiPolygon","id":"LKA","properties":{"name":"Sri Lanka"}},{"arcs":[[1004]],"type":"Polygon","id":"LSO","properties":{"name":"Lesotho"}},{"arcs":[[[1005,1006]],[[-210,1007,1008,1009,1010]]],"type":"MultiPolygon","id":"LTU","properties":{"name":"Lithuania"}},{"arcs":[[-561,-670,-163]],"type":"Polygon","id":"LUX","properties":{"name":"Luxembourg"}},{"arcs":[[1011,-211,-1011,1012,-644]],"type":"Polygon","id":"LVA","properties":{"name":"Latvia"}},{"arcs":[[1013,1014]],"type":"Polygon","id":"MAF","properties":{"name":"St-Martin"}},{"arcs":[[-622,1015,-620,1016,-592,1017,1018]],"type":"Polygon","id":"MAR","properties":{"name":"Morocco"}},{"arcs":[[1019,-674]],"type":"Polygon","id":"MCO","properties":{"name":"Monaco"}},{"arcs":[[1020,1021]],"type":"Polygon","id":"MDA","properties":{"name":"Moldova"}},{"arcs":[[[1022]],[[1023]]],"type":"MultiPolygon","id":"MDG","properties":{"name":"Madagascar"}},{"arcs":[[[1024]],[[1025]],[[1026]],[[1027]],[[1028]],[[1029,1030,1031,1032,1033,-214,-769,1034,1035],[1036]]],"type":"MultiPolygon","id":"MEX","properties":{"name":"Mexico"}},{"arcs":[[[-23,1037]],[[-187,-733,1038,-15,1039,-21,1040,-19,-985,1041]]],"type":"MultiPolygon","id":"MKD","properties":{"name":"Macedonia"}},{"arcs":[[1042,-178,-472,-704,1043,1044,-589]],"type":"Polygon","id":"MLI","properties":{"name":"Mali"}},{"arcs":[[[1045]],[[1046]],[[1047]],[[1048]],[[1049]],[[1050]],[[-993,1051,1052,-181,-895,-451]]],"type":"MultiPolygon","id":"MMR","properties":{"name":"Myanmar"}},{"arcs":[[1053,-986,-31,1054,-16,1055,-29,1056,-780,-203]],"type":"Polygon","id":"MNE","properties":{"name":"Montenegro"}},{"arcs":[[-464,1057,-462,1058]],"type":"Polygon","id":"MNG","properties":{"name":"Mongolia"}},{"arcs":[[[1059,1060,1061,1062,1063,1064,1065,1066,1067]]],"type":"MultiPolygon","id":"MOZ","properties":{"name":"Mozambique"}},{"arcs":[[[1068,1069,1070,-590,-1045]]],"type":"MultiPolygon","id":"MRT","properties":{"name":"Mauritania"}},{"arcs":[[[1071]]],"type":"MultiPolygon","id":"MUS","properties":{"name":"Mauritius"}},{"arcs":[[[1072,1073]],[[1074,1075]],[[1076,1077]],[[1078,1079]],[[1080,-1065,1081,1082]]],"type":"MultiPolygon","id":"MWI","properties":{"name":"Malawi"}},{"arcs":[[[1083]],[[-882,1084]],[[1085]],[[1086]],[[1087,1088]],[[-886,1089,-256,1090,-253,1091]],[[1092]]],"type":"MultiPolygon","id":"MYS","properties":{"name":"Malaysia"}},{"arcs":[[1093,-261,1094,1095,-8]],"type":"Polygon","id":"NAM","properties":{"name":"Namibia"}},{"arcs":[[[1096]],[[1097]],[[1098]]],"type":"MultiPolygon","id":"NCL","properties":{"name":"New Caledonia"}},{"arcs":[[1099,1100,-173,-174,-1043,-588,-1000]],"type":"Polygon","id":"NER","properties":{"name":"Niger"}},{"arcs":[[[1101,-478,1102,-169,-1101]]],"type":"MultiPolygon","id":"NGA","properties":{"name":"Nigeria"}},{"arcs":[[[1103,-528,1104,-776]]],"type":"MultiPolygon","id":"NIC","properties":{"name":"Nicaragua"}},{"arcs":[[[-166,1105]],[[1106]],[[-562,-168,1107],[1108]]],"type":"MultiPolygon","id":"NLD","properties":{"name":"Netherlands"}},{"arcs":[[[1109]],[[1110]],[[1111]],[[1112]],[[1113]],[[1114]],[[1115]],[[1116]],[[1117]],[[1118]],[[1119]],[[1120]],[[1121]],[[1122]],[[1123,-656,1124,1125]],[[1126]],[[1127]],[[1128]],[[1129]],[[1130]],[[1131]],[[1132]]],"type":"MultiPolygon","id":"NOR","properties":{"name":"Norway"}},{"arcs":[[-894,-454]],"type":"Polygon","id":"NPL","properties":{"name":"Nepal"}},{"arcs":[[[1133]],[[1134]],[[1135]],[[1136]],[[1137]],[[1138]]],"type":"MultiPolygon","id":"NZL","properties":{"name":"New Zealand"}},{"arcs":[[[1139]],[[1140,1141,-37,1142]],[[-41],[-35]],[[-40,1143]]],"type":"MultiPolygon","id":"OMN","properties":{"name":"Oman"}},{"arcs":[[[-954,-897,1144,-903,-2,-457]]],"type":"MultiPolygon","id":"PAK","properties":{"name":"Pakistan"}},{"arcs":[[[1145]],[[-517,1146,-526,1147]]],"type":"MultiPolygon","id":"PAN","properties":{"name":"Panama"}},{"arcs":[[[-248,-221,1148,-215,1149,-219,-438,1150,-600,-514]]],"type":"MultiPolygon","id":"PER","properties":{"name":"Peru"}},{"arcs":[[[1151]],[[1152]],[[1153]],[[1154]],[[1155]],[[1156]],[[1157]],[[1158]],[[1159]],[[1160]],[[1161]],[[1162]],[[1163]],[[1164]],[[1165]],[[1166]],[[1167]],[[1168]],[[1169]],[[1170]],[[1171]],[[1172]],[[1173]],[[1174]],[[1175]],[[1176]],[[1177]],[[1178]],[[1179]],[[1180]],[[1181]]],"type":"MultiPolygon","id":"PHL","properties":{"name":"Philippines"}},{"arcs":[[[1182]]],"type":"MultiPolygon","id":"PLW","properties":{"name":"Palau"}},{"arcs":[[[1183]],[[1184]],[[1185]],[[1186]],[[1187]],[[1188]],[[1189]],[[1190]],[[1191]],[[1192]],[[1193]],[[1194]],[[-858,1195]],[[1196]],[[1197]],[[1198]],[[1199]]],"type":"MultiPolygon","id":"PNG","properties":{"name":"Papua New Guinea"}},{"arcs":[[1200,1201,1202,-1008,-209,1203,1204,-550,-558,1205,-554,1206]],"type":"Polygon","id":"POL","properties":{"name":"Poland"}},{"arcs":[[[1207]]],"type":"MultiPolygon","id":"PRI","properties":{"name":"Puerto Rico"}},{"arcs":[[[1208,1209,-983,1210,-445]]],"type":"MultiPolygon","id":"PRK","properties":{"name":"Dem. Rep. Korea"}},{"arcs":[[[1211]],[[1212]],[[1213]],[[1214]],[[1215,-633]]],"type":"MultiPolygon","id":"PRT","properties":{"name":"Portugal"}},{"arcs":[[-247,1216,-245,-46,-217]],"type":"Polygon","id":"PRY","properties":{"name":"Paraguay"}},{"arcs":[[[-602,1217,-923]],[[-938,1218,-917]]],"type":"MultiPolygon","id":"PSX","properties":{"name":"Palestine"}},{"arcs":[[[1219]]],"type":"MultiPolygon","id":"PYF","properties":{"name":"Fr. Polynesia"}},{"arcs":[[1220,1221]],"type":"Polygon","id":"QAT","properties":{"name":"Qatar"}},{"arcs":[[1222,1223,-189,1224,-795,1225,-1021]],"type":"Polygon","id":"ROU","properties":{"name":"Romania"}},{"arcs":[[[1226]],[[1227]],[[1228]],[[1229]],[[1230]],[[1231]],[[1232]],[[1233]],[[1234]],[[1235]],[[1236]],[[-1203,1237,-1201,1238,-1006,1239,-1009]],[[1240]],[[1241]],[[1242,-639]],[[1243]],[[1244]],[[1245]],[[1246]],[[1247]],[[1248]],[[1249]],[[1250]],[[1251]],[[1252]],[[1253]],[[1254]],[[1255]],[[1256]],[[1257]],[[1258]],[[1259]],[[1260]],[[1261]],[[1262]],[[1263]],[[1264]],[[1265]],[[1266]],[[1267]],[[1268]],[[1269]],[[1270]],[[-1209,-444,1271,-465,-1059,-461,-963,1272,-154,-699,1273,1274,-207,-1012,-643,1275,-641,1276,-637,1277,-653,-1124,1278]],[[1279]],[[1280]],[[1281]],[[1282]],[[1283]],[[1284]],[[1285]],[[1286]],[[1287]],[[1288]],[[1289]],[[1290]],[[1291]],[[1292]],[[1293]],[[1294]],[[1295]],[[1296]],[[1297]],[[1298]]],"type":"MultiPolygon","id":"RUS","properties":{"name":"Russia"}},{"arcs":[[1299,-161,-504,1300,-502,1301]],"type":"Polygon","id":"RWA","properties":{"name":"Rwanda"}},{"arcs":[[-591,-1071,1302,-1018]],"type":"Polygon","id":"ESH","properties":{"name":"W. Sahara"}},{"arcs":[[[1303]],[[-989,1304,-1221,1305,-38,-1142,1306,1307,-934,-909]]],"type":"MultiPolygon","id":"SAU","properties":{"name":"Saudi Arabia"}},{"arcs":[[[1308,-610,-651,1309,-262,1310,-998,-605]]],"type":"MultiPolygon","id":"SDN","properties":{"name":"Sudan"}},{"arcs":[[-650,-969,1311,-496,-263,-1310]],"type":"Polygon","id":"SSD","properties":{"name":"S. Sudan"}},{"arcs":[[-1044,-709,-714,1312,-711,1313,-1069]],"type":"Polygon","id":"SEN","properties":{"name":"Senegal"}},{"arcs":[[1314]],"type":"Polygon","id":"SGP","properties":{"name":"Singapore"}},{"arcs":[[[1315]]],"type":"MultiPolygon","id":"SGS","properties":{"name":"S. Geo. and S. Sandw. Is."}},{"arcs":[[[1316]],[[1317]],[[1318]],[[1319]],[[1320]],[[1321]],[[1322]],[[1323]],[[1324]],[[1325]],[[1326]],[[1327]],[[1328]]],"type":"MultiPolygon","id":"SLB","properties":{"name":"Solomon Is."}},{"arcs":[[[1329]],[[-997,1330,-706]]],"type":"MultiPolygon","id":"SLE","properties":{"name":"Sierra Leone"}},{"arcs":[[[-778,1331,-767]]],"type":"MultiPolygon","id":"SLV","properties":{"name":"El Salvador"}},{"arcs":[[-931]],"type":"Polygon","id":"SMR","properties":{"name":"San Marino"}},{"arcs":[[1332,-647,-565,1333]],"type":"Polygon","id":"SOL","properties":{"name":"Somaliland"}},{"arcs":[[-964,-648,-1333,1334]],"type":"Polygon","id":"SOM","properties":{"name":"Somalia"}},{"arcs":[[-1225,-188,-1042,-987,-1054,-202,-787,-796]],"type":"Polygon","id":"SRB","properties":{"name":"Serbia"}},{"arcs":[[[1335]]],"type":"MultiPolygon","id":"STP","properties":{"name":"S\u00e3o Tom\u00e9 and Principe"}},{"arcs":[[-664,-239,-771,1336]],"type":"Polygon","id":"SUR","properties":{"name":"Suriname"}},{"arcs":[[1337,-798,-142,-551,-1205]],"type":"Polygon","id":"SVK","properties":{"name":"Slovakia"}},{"arcs":[[-789,1338,-929,-144,-797]],"type":"Polygon","id":"SVN","properties":{"name":"Slovenia"}},{"arcs":[[[1339]],[[1340]],[[1341]],[[1342,-1125,-655]]],"type":"MultiPolygon","id":"SWE","properties":{"name":"Sweden"}},{"arcs":[[-1061,1343]],"type":"Polygon","id":"SWZ","properties":{"name":"Swaziland"}},{"arcs":[[1344,-1014]],"type":"Polygon","id":"SXM","properties":{"name":"Sint Maarten"}},{"arcs":[[-913,911,-911,-939,-926,-995,1345,1346]],"type":"Polygon","id":"SYR","properties":{"name":"Syria"}},{"arcs":[[-1311,-267,-473,1347,-481,1348,-479,-1102,-1100,-999]],"type":"Polygon","id":"TCD","properties":{"name":"Chad"}},{"arcs":[[-171,1349,-700,-175]],"type":"Polygon","id":"TGO","properties":{"name":"Togo"}},{"arcs":[[[1350]],[[1351]],[[-992,-976,1352,-1089,1353,-1052]]],"type":"MultiPolygon","id":"THA","properties":{"name":"Thailand"}},{"arcs":[[[-974]],[[1354]],[[-970,-458,-6,1355]]],"type":"MultiPolygon","id":"TJK","properties":{"name":"Tajikistan"}},{"arcs":[[[-4,-902,1356,-961,1357,1358,1359]]],"type":"MultiPolygon","id":"TKM","properties":{"name":"Turkmenistan"}},{"arcs":[[[1360,-803]],[[-805,1361]]],"type":"MultiPolygon","id":"TLS","properties":{"name":"Timor-Leste"}},{"arcs":[[[1362]]],"type":"MultiPolygon","id":"TON","properties":{"name":"Tonga"}},{"arcs":[[[1363]]],"type":"MultiPolygon","id":"TTO","properties":{"name":"Trinidad and Tobago"}},{"arcs":[[[1364]],[[-1001,-586,1365]]],"type":"MultiPolygon","id":"TUN","properties":{"name":"Tunisia"}},{"arcs":[[[1366,-734,-185]],[[-697,-56,-153,-906,-914,-1347,1367]]],"type":"MultiPolygon","id":"TUR","properties":{"name":"Turkey"}},{"arcs":[[[1368]]],"type":"MultiPolygon","id":"TWN","properties":{"name":"Taiwan"}},{"arcs":[[[1369]],[[1370]],[[1371]],[[1372]],[[1373,1374,1375,-966,1376,-1067,1377,-1074,1378,-1076,1379,-1078,1380,-1080,1381,-1083,1382,1383,-158,-1300,1384]]],"type":"MultiPolygon","id":"TZA","properties":{"name":"Tanzania"}},{"arcs":[[[-1375,1385]],[[1386,-1385,-1302,-501,1387,-499,1388,-497,-1312,-968]]],"type":"MultiPolygon","id":"UGA","properties":{"name":"Uganda"}},{"arcs":[[[1389,-1223,-1022,-1226,-794,-1338,-1204,-208,-1275],[1390],[1391]]],"type":"MultiPolygon","id":"UKR","properties":{"name":"Ukraine"}},{"arcs":[[1392,-242,1393,-48,-244]],"type":"Polygon","id":"URY","properties":{"name":"Uruguay"}},{"arcs":[[[1394]],[[1395]],[[1396]],[[1397]],[[1398]],[[1399]],[[1400]],[[1401]],[[1402]],[[1403]],[[1404]],[[1405]],[[1406]],[[1407]],[[1408]],[[1409]],[[1410,-344]],[[1411,-340,1412,-338,1413,-336,1414,-334,-278,1415,-276,1416,-1033,1417,-1031,1418,-1036,1419,-342]],[[1420]],[[1421]],[[1422]],[[1423]],[[1424]],[[1425]],[[1426]],[[1427]],[[1428]],[[1429]],[[1430]],[[1431]],[[1432]],[[1433]],[[1434]],[[1435]],[[1436]],[[1437]],[[1438]],[[1439]],[[1440]],[[1441]],[[1442]],[[1443]],[[1444]],[[1445]],[[1446]],[[1447]],[[1448]],[[1449]],[[1450]],[[1451]],[[1452]],[[1453]],[[-347,345,1454]]],"type":"MultiPolygon","id":"USA","properties":{"name":"United States"}},{"arcs":[[[-534,1455]],[[1456,-532]]],"type":"MultiPolygon","id":"USG","properties":{"name":"USNB Guantanamo Bay"}},{"arcs":[[[-973]],[[-972]],[[-955,1457,-958,-971,-1356,-5,-1360,1458,-1358,-960,1459],[-1355]]],"type":"MultiPolygon","id":"UZB","properties":{"name":"Uzbekistan"}},{"arcs":[[-932]],"type":"Polygon","id":"VAT","properties":{"name":"Vatican"}},{"arcs":[[[1460]]],"type":"MultiPolygon","id":"VCT","properties":{"name":"St. Vin. and Gren."}},{"arcs":[[[1461]],[[1462]],[[1463]],[[-772,-250,-513,1464]]],"type":"MultiPolygon","id":"VEN","properties":{"name":"Venezuela"}},{"arcs":[[[1465]],[[1466,-978,-991,-449]]],"type":"MultiPolygon","id":"VNM","properties":{"name":"Vietnam"}},{"arcs":[[[1467]],[[1468]],[[1469]],[[1470]],[[1471]],[[1472]],[[1473]],[[1474]],[[1475]],[[1476]],[[1477]],[[1478]]],"type":"MultiPolygon","id":"VUT","properties":{"name":"Vanuatu"}},{"arcs":[[1479,-547]],"type":"Polygon","id":"WSB","properties":{"name":"Akrotiri"}},{"arcs":[[[1480]],[[1481]]],"type":"MultiPolygon","id":"WSM","properties":{"name":"Samoa"}},{"arcs":[[[1482]],[[1483,-1307,-1141]]],"type":"MultiPolygon","id":"YEM","properties":{"name":"Yemen"}},{"arcs":[[[-1062,-1344,-1060,1484,-1095,-260,1485],[-1005]]],"type":"MultiPolygon","id":"ZAF","properties":{"name":"South Africa"}},{"arcs":[[-1383,-1082,-1064,1486,1487,1488,-1094,-7,-508,1489,-506,1490]],"type":"Polygon","id":"ZMB","properties":{"name":"Zambia"}},{"arcs":[[-1063,-1486,-259,-1489,1491,-1487]],"type":"Polygon","id":"ZWE","properties":{"name":"Zimbabwe"}}],"type":"GeometryCollection"}},"transform":{"translate":[-180,-90],"scale":[0.036003600360036005,0.01736514657995801]}} \ No newline at end of file diff --git a/src/components/statuspage/FeesItem.tsx b/src/components/statuspage/FeesItem.tsx deleted file mode 100644 index d072f2e5..00000000 --- a/src/components/statuspage/FeesItem.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import * as React from "react"; - -import BigNumber from "bignumber.js"; - -import { faChevronRight } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; - -import { OldToken, Token } from "../../lib/ethereum/tokens"; -import { updateDarknodeStatistics } from "../../store/actions/statistics/operatorActions"; -import { withdrawReward } from "../../store/actions/trader/darknode"; -import { ApplicationData } from "../../store/types"; -import { Loading } from "../Loading"; - -const defaultState = { // Entries must be immutable - loading: false, -}; - -class FeesItemClass extends React.Component { - constructor(props: Props) { - super(props); - this.state = defaultState; - } - - public render = (): JSX.Element => { - const { loading } = this.state; - const disabled = (new BigNumber(this.props.amount)).lte(0) || !this.props.disabled; - return ( - - ); - } - - private readonly handleWithdraw = async (): Promise => { - const { store, darknodeID, token } = this.props; - const { web3, tokenPrices, address, ethNetwork } = store; - this.setState({ loading: true }); - - if (address) { - try { - // tslint:disable-next-line: await-promise - await this.props.actions.withdrawReward(web3, ethNetwork, address, darknodeID, token); - } catch (error) { - this.setState({ loading: false }); - return; - } - // tslint:disable-next-line: await-promise - await this.props.actions.updateDarknodeStatistics(web3, ethNetwork, darknodeID, tokenPrices); - } - - this.setState({ loading: false }); - } -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - web3: state.trader.web3, - tokenPrices: state.statistics.tokenPrices, - address: state.trader.address, - withdrawAddresses: state.statistics.withdrawAddresses, - ethNetwork: state.trader.ethNetwork, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - withdrawReward, - updateDarknodeStatistics, - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType { - disabled: boolean; - token: Token | OldToken; - amount: string | BigNumber; - darknodeID: string; -} - -export const FeesItem = connect(mapStateToProps, mapDispatchToProps)(FeesItemClass); diff --git a/src/components/statuspage/OldFees.tsx b/src/components/statuspage/OldFees.tsx deleted file mode 100644 index 6615c7dd..00000000 --- a/src/components/statuspage/OldFees.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import * as React from "react"; - -import { TokenIcon } from "@renex/react-components"; -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; - -import { ApplicationData, DarknodeDetails } from "../../store/types"; -import { CurrencyIcon } from "../CurrencyIcon"; -import { TokenBalance } from "../TokenBalance"; -import { FeesItem } from "./FeesItem"; - -const OldFeesClass: React.StatelessComponent = (props) => { - const { darknodeDetails, store, isOperator } = props; - const { - quoteCurrency, - } = store; - - const oldFees = []; - if (darknodeDetails) { - for (const [token, balance] of darknodeDetails.oldFeesEarned.toArray()) { - const tokenName = token.replace(" (old)", ""); - if (balance.isZero()) { - continue; - } - oldFees.push( - - - {" "} - {tokenName} - - - - - - - - {" "} - - {quoteCurrency.toUpperCase()} - - - {isOperator ? - - : <>} - ); - } - } - - return oldFees.length > 0 ? <> - - - Old fees - - - {oldFees} - : <>; -}; - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - quoteCurrency: state.statistics.quoteCurrency, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType { - isOperator: boolean; - darknodeDetails: DarknodeDetails | null; -} - -export const OldFees = connect(mapStateToProps, mapDispatchToProps)(OldFeesClass); diff --git a/src/components/statuspage/TopUp.tsx b/src/components/statuspage/TopUp.tsx deleted file mode 100644 index 22b9544c..00000000 --- a/src/components/statuspage/TopUp.tsx +++ /dev/null @@ -1,185 +0,0 @@ -import * as React from "react"; - -import { BigNumber } from "bignumber.js"; -import { connect, ConnectedReturnType } from "react-redux"; // Custom typings -import { bindActionCreators, Dispatch } from "redux"; - -import { _captureBackgroundException_ } from "../../lib/errors"; -import { updateDarknodeStatistics } from "../../store/actions/statistics/operatorActions"; -import { showFundPopup } from "../../store/actions/statistics/operatorPopupActions"; -import { ApplicationData } from "../../store/types"; - -const CONFIRMATION_MESSAGE = "Transaction confirmed."; - -const defaultState = { // Entries must be immutable - value: "0.1", - resultMessage: "", - pending: false, - disabled: false, - traderBalance: new BigNumber(0), -}; - -class TopUpClass extends React.Component { - private _isMounted = false; - - constructor(props: Props) { - super(props); - this.state = defaultState; - } - - public componentDidMount = async () => { - this._isMounted = true; - this.updateTraderBalance().catch((error) => { - _captureBackgroundException_(error, { - description: "Error in updateTraderBalance in TopUp", - }); - }); - } - - public componentWillUnmount = () => { - this._isMounted = false; - } - - public render = (): JSX.Element => { - const { value, resultMessage, pending, disabled } = this.state; - return ( -
    - - {resultMessage && -

    - {resultMessage} -

    - } -
    - ); - } - - private readonly handleChange = (event: React.ChangeEvent): void => { - const value = event.target.value; - this.setState({ value }); - - const { traderBalance, resultMessage, disabled } = this.state; - // If input is invalid, show an error. - if (isNaN(parseFloat(value)) || parseFloat(value) <= 0) { - this.setState({ disabled: true }); - } else if (traderBalance.isLessThan(value)) { - this.setState({ - resultMessage: `Insufficient balance. Maximum deposit: ${traderBalance.toFixed()}`, - disabled: true, - }); - } else if (resultMessage || disabled) { - this.setState({ resultMessage: "", disabled: false }); - } - } - - private readonly updateTraderBalance = async (): Promise => { - const { store: { address, web3 } } = this.props; - - let traderBalance; - if (!address) { - traderBalance = new BigNumber(-1); - } else { - traderBalance = new BigNumber((await web3.eth.getBalance(address)).toString()) - .div(new BigNumber(10).exponentiatedBy(18)); - } - this.setState({ traderBalance }); - return traderBalance; - } - - private readonly handleBlur = async (_event: React.ChangeEvent): Promise => { - const { value } = this.state; - let traderBalance; - try { - traderBalance = await this.updateTraderBalance(); - if (traderBalance.isLessThan(value)) { - this.setState({ value: traderBalance.toFixed(), disabled: true }); - } - } catch (error) { - _captureBackgroundException_(error, { - description: "Error in handleBlur in TopUp", - }); - } - } - - private readonly sendFunds = async (): Promise => { - const { darknodeID, store: { address, web3, tokenPrices, ethNetwork } } = this.props; - const { value } = this.state; - - this.setState({ resultMessage: "", pending: true }); - - if (!address) { - this.setState({ resultMessage: `Invalid account.`, pending: false }); - return; - } - - const onCancel = () => { - if (this._isMounted) { - this.setState({ pending: false }); - } - }; - - const onDone = async () => { - try { - await this.props.actions.updateDarknodeStatistics(web3, ethNetwork, darknodeID, tokenPrices); - } catch (error) { - // Ignore error - } - - if (this._isMounted) { - this.setState({ resultMessage: CONFIRMATION_MESSAGE, pending: false }); - - // If the user hasn't changed the value, set it to 0. - if (this.state.value === value) { - this.setState({ value: "0" }); - } - } - }; - - // tslint:disable-next-line: await-promise - await this.props.actions.showFundPopup(web3, address, darknodeID, value, onCancel, onDone); - } -} - -const mapStateToProps = (state: ApplicationData) => ({ - store: { - address: state.trader.address, - web3: state.trader.web3, - tokenPrices: state.statistics.tokenPrices, - ethNetwork: state.trader.ethNetwork, - }, -}); - -const mapDispatchToProps = (dispatch: Dispatch) => ({ - actions: bindActionCreators({ - showFundPopup, - updateDarknodeStatistics, - }, dispatch), -}); - -interface Props extends ReturnType, ConnectedReturnType { - darknodeID: string; -} - -export const TopUp = connect(mapStateToProps, mapDispatchToProps)(TopUpClass); diff --git a/src/components/statuspage/block/Block.tsx b/src/components/statuspage/block/Block.tsx deleted file mode 100644 index 6646d6dc..00000000 --- a/src/components/statuspage/block/Block.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from "react"; - -// tslint:disable: react-unused-props-and-state -interface Props { - children: React.ReactNode; - className?: string; - onClick?: ((event: React.MouseEvent) => void); -} - -export const Block = (props: Props) => { - return
    {props.children}
    ; -}; - -export const BlockBody = (props: Props) => { - return
    {props.children}
    ; -}; - -export const BlockTitle = (props: Props) => { - return
    {props.children}
    ; -}; diff --git a/src/components/statuspage/block/GasBlock.tsx b/src/components/statuspage/block/GasBlock.tsx deleted file mode 100644 index 34a65e28..00000000 --- a/src/components/statuspage/block/GasBlock.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import * as React from "react"; - -import BigNumber from "bignumber.js"; - -import { faChevronRight, faFire, faTimes } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - -import { Currency, DarknodeDetails } from "../../../store/types"; -import { CurrencyIcon } from "../../CurrencyIcon"; -import { TopUp } from "../TopUp"; -import { Block, BlockBody, BlockTitle } from "./Block"; - -const defaultState = { // Entries must be immutable - showAdvanced: false, -}; - -export class GasBlock extends React.Component { - - public constructor(props: Props, context: object) { - super(props, context); - this.state = defaultState; - } - - public render = (): JSX.Element => { - const { darknodeDetails } = this.props; - const { showAdvanced } = this.state; - - const gasValue = darknodeDetails ? - (darknodeDetails.ethBalance.div(new BigNumber(Math.pow(10, 18)))).toFixed(3) : - ""; - - return ( - - - {showAdvanced ?
    - -
    : null} - - -

    - - Gas Balance -

    -
    - - {darknodeDetails ? - {!showAdvanced ? -
    -
    - - {gasValue} - ETH -
    -
    - -
    -
    : -
    -
    - {gasValue} - ETH -
    -
    - -
    -
    - } -
    : null} -
    - ); - } - - private readonly toggleAdvanced = (): void => { - this.setState({ showAdvanced: !this.state.showAdvanced }); - } - -} - -interface Props { - darknodeDetails: DarknodeDetails | null; -} diff --git a/src/components/statuspage/block/NetworkBlock.tsx b/src/components/statuspage/block/NetworkBlock.tsx deleted file mode 100644 index f4529f05..00000000 --- a/src/components/statuspage/block/NetworkBlock.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import * as React from "react"; - -import { faServer } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - -import { DarknodeDetails } from "../../../store/types"; -import { darknodeIDHexToBase58 } from "../../pages/Darknode"; -import { Block, BlockBody, BlockTitle } from "./Block"; - -export const NetworkBlock = (props: Props): JSX.Element => { - const { darknodeDetails } = props; - - const darknodeIDBase58 = darknodeDetails ? darknodeIDHexToBase58(darknodeDetails.ID) : ""; - - return ( - - - {/* {showAdvanced ?
    - -
    : null} */} - - -

    - - Network Information -

    -
    - - {darknodeDetails ? -
    - - - - - - - -
    ID{darknodeIDBase58}
    Address{darknodeDetails.ID}
    Public Key{darknodeDetails.publicKey}
    Operator{darknodeDetails.operator}
    -
    -
    : null} -
    - ); -}; - -// tslint:disable: react-unused-props-and-state -interface Props { - darknodeDetails: DarknodeDetails | null; -} diff --git a/src/index.tsx b/src/index.tsx index 3e125d7f..e80b9914 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,3 +1,5 @@ +import "./styles/index.scss"; + import * as React from "react"; import * as ReactDOM from "react-dom"; @@ -6,38 +8,40 @@ import { Route, Router, Switch } from "react-router-dom"; import { PersistGate } from "redux-persist/integration/react"; import { App } from "./components/App"; -import { _catch_ } from "./components/ErrorBoundary"; -import { environment } from "./lib/environmentVariables"; -import { history } from "./lib/history"; -import { onLoad } from "./lib/onLoad"; -import { configureStore } from "./store/configureStore"; -import "./styles/index.scss"; +import { _catch_ } from "./components/common/ErrorBoundary"; +import { NODE_ENV } from "./lib/react/environmentVariables"; +import { history } from "./lib/react/history"; +import { onLoad } from "./lib/react/onLoad"; +import { persistor, store } from "./store/configureStore"; // Redirect to https if we aren't serving locally -if (environment !== "local") { +if (NODE_ENV !== "development") { const loc = window.location.href + ""; // tslint:disable-next-line: no-http-string if (loc.indexOf("http://") === 0) { + console.log("Redirecting to use TLS"); // tslint:disable-next-line: no-http-string window.location.href = loc.replace("http://", "https://"); } } -const { store, persistor } = configureStore(); - -onLoad("Darknode Command Center"); +onLoad("Command Center"); ReactDOM.render( - _catch_( - - - - {/* We add the routes here as well as in App so that App has access to the URL parameters */} - - - - - - ), + _catch_( + + + + + {/* We add the routes here as well as in App so that App has access to the URL parameters */} + + + {/* Don't add extra routes here - add them in App */} + + + + , + { popup: true }, + ), document.getElementById("root") as HTMLElement ); diff --git a/src/languages/english.ts b/src/languages/english.ts index 73fddd8d..be82b1a8 100644 --- a/src/languages/english.ts +++ b/src/languages/english.ts @@ -6,7 +6,6 @@ export const ENGLISH: Language = { noAccounts: `No accounts found. Ensure your wallet is unlocked.`, mustInstallMetaMask: `Please install MetaMask to access your darknodes.`, - mustChangeNetwork: `Please change your wallet network to Mainnet.`, mustUnlock: `Please unlock MetaMask to access your darknodes.`, mustConnect: `Please connect MetaMask to access your darknodes.`, } diff --git a/src/languages/language.ts b/src/languages/language.ts index 20c1a4ad..e85be7b2 100644 --- a/src/languages/language.ts +++ b/src/languages/language.ts @@ -6,7 +6,6 @@ export interface Language { noAccounts: string; mustInstallMetaMask: string; - mustChangeNetwork: string; mustUnlock: string; mustConnect: string; }; diff --git a/src/lib/conversion.ts b/src/lib/conversion.ts deleted file mode 100644 index 75df1fe2..00000000 --- a/src/lib/conversion.ts +++ /dev/null @@ -1,48 +0,0 @@ -import moment from "moment"; - -export const alreadyPast = (expiry: number) => { - return moment.unix(expiry).isBefore(moment.now()); -}; - -/** - * Converts a timestamp to the number of hours, minutes or seconds from now, - * showing "Expired" if the timestamp has already passed. - * - * TODO: Make countdown schedule rerender (based on time unit) - * - * @param expiry the time to countdown to as a unix timestamp in seconds - * @returns a JSX span element with the time remaining and a unit - */ -export const naturalTime = (expiry: number, options: { message: string; prefix?: string; suffix?: string; countDown: boolean; showingSeconds?: boolean }): string => { - let diff; - if (!options.countDown) { - diff = moment.duration(moment().diff(moment.unix(expiry))); - } else { - diff = moment.duration(moment.unix(expiry).diff(moment())); - } - let days = diff.asDays(); - let hours = diff.asHours(); - let minutes = diff.asMinutes(); - let seconds = diff.asSeconds(); - - const suffix = options.suffix ? ` ${options.suffix}` : ""; - const prefix = options.prefix ? `${options.prefix} ` : ""; - - if (days > 2) { - days = Math.round(days); - return `${prefix}${days} ${days === 1 ? "day" : "days"}${suffix}`; - } - if (hours >= 1) { - // Round to the closest hour - hours = Math.round(hours); - return `${prefix}${hours} ${hours === 1 ? "hour" : "hours"}${suffix}`; - } else if (minutes >= 1) { - minutes = Math.round(minutes); - return `${prefix}${minutes} ${minutes === 1 ? "minute" : "minutes"}${suffix}`; - } else if (options.showingSeconds && seconds >= 0) { - seconds = Math.floor(seconds); - return `${prefix}${seconds} ${seconds === 1 ? "second" : "seconds"}${suffix}`; - } else { - return `${options.message}`; - } -}; diff --git a/src/lib/darknode/darknodeID.ts b/src/lib/darknode/darknodeID.ts new file mode 100644 index 00000000..31a62617 --- /dev/null +++ b/src/lib/darknode/darknodeID.ts @@ -0,0 +1,11 @@ +import { toChecksumAddress } from "web3-utils"; + +import { EncodedData, Encodings } from "../../lib/general/encodedData"; + +export const darknodeIDBase58ToHex = (darknodeID: string): string => + toChecksumAddress( + (`0x${new EncodedData(darknodeID, Encodings.BASE58).toHex("").slice(4)}`).toLowerCase() + ); + +export const darknodeIDHexToBase58 = (darknodeID: string): string => + new EncodedData(`0x1B14${darknodeID.slice(2)}`, Encodings.HEX).toBase58(); diff --git a/src/lib/darknode/jsonrpc.ts b/src/lib/darknode/jsonrpc.ts new file mode 100644 index 00000000..9e001ead --- /dev/null +++ b/src/lib/darknode/jsonrpc.ts @@ -0,0 +1,56 @@ +import { Record } from "@renproject/react-components"; +import Axios from "axios"; + +import { retryNTimes, RPCResponse } from "../../components/renvmPage/renvmContainer"; + +export interface ResponseQueryStat { + version: string; + multiAddress: string; + cpus: Array<{ + cores: number; + clockRate: number; + cacheSize: number; + modelName: string; + }>; + memory: number; + memoryUsed: number; + memoryFree: number; + disk: number; + diskUsed: number; + diskFree: number; + systemUptime: number; + serviceUptime: number; +} + +export class NodeStatistics extends Record({ + version: "", + multiAddress: "", + memory: 0, + memoryUsed: 0, + memoryFree: 0, + disk: 0, + diskUsed: 0, + diskFree: 0, + systemUptime: 0, + serviceUptime: 0, + + cores: 0, +}) { } + +export const queryStat = async (lightnode: string, darknodeID: string) => { + const request = { jsonrpc: "2.0", method: "ren_queryStat", params: {}, id: 67 }; + const result = (await retryNTimes(async () => await Axios.post>(`${lightnode}?id=${darknodeID}`, request), 2)).data.result; + return new NodeStatistics({ + version: result.version, + multiAddress: result.multiAddress, + memory: result.memory, + memoryUsed: result.memoryUsed, + memoryFree: result.memoryFree, + disk: result.disk, + diskUsed: result.diskUsed, + diskFree: result.diskFree, + systemUptime: result.systemUptime, + serviceUptime: result.serviceUptime, + cores: result.cpus.reduce((sum, cpu) => sum + cpu.cores, 0), + }); +}; diff --git a/src/lib/declarations/react-redux.d.ts b/src/lib/declarations/react-redux.d.ts index 24bb5f5a..0edd1d62 100644 --- a/src/lib/declarations/react-redux.d.ts +++ b/src/lib/declarations/react-redux.d.ts @@ -1,5 +1,4 @@ import * as redux from "react-redux"; -import { connect, ConnectedComponentClass, GetProps, MapDispatchToPropsNonObject, MapStateToPropsParam, Matching, Omit, Shared } from "react-redux"; import { ComponentType } from "react"; declare module "react-redux" { @@ -13,7 +12,7 @@ declare module "react-redux" { OUTER extends { actions: infer ACTIONS } ? { actions: { [KEY in keyof ACTIONS]: - /**/ACTIONS[KEY] extends (...args: infer Args) => (d: any) => Promise ? + /**/ACTIONS[KEY] extends (...args: infer Args) => (d: any, getState?: any) => Promise ? /**//**/(...args: Args) => Promise : /**//**/ACTIONS[KEY]; }; diff --git a/src/lib/declarations/truffle-hdwallet-provider.d.ts b/src/lib/declarations/truffle-hdwallet-provider.d.ts new file mode 100644 index 00000000..95e64aa6 --- /dev/null +++ b/src/lib/declarations/truffle-hdwallet-provider.d.ts @@ -0,0 +1 @@ +declare module "@truffle/hdwallet-provider"; \ No newline at end of file diff --git a/src/lib/environmentVariables.ts b/src/lib/environmentVariables.ts deleted file mode 100644 index 3c4a6687..00000000 --- a/src/lib/environmentVariables.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Network } from "../store/types"; - -export const PUBLIC_NODE = process.env.REACT_APP_PUBLIC_NODE; -export const SENTRY_DSN = process.env.REACT_APP_SENTRY_DSN; -export const DEPLOYMENT = process.env.REACT_APP_DEPLOYMENT as Network | undefined; -export const SOURCE_VERSION = process.env.REACT_APP_SOURCE_VERSION; -export const environment = ((process.env.NODE_ENV === "development") ? "local" : DEPLOYMENT) || "unknown"; diff --git a/src/lib/ethereum/browsers.ts b/src/lib/ethereum/browsers.ts index e413fdd8..4458dc00 100644 --- a/src/lib/ethereum/browsers.ts +++ b/src/lib/ethereum/browsers.ts @@ -23,6 +23,13 @@ export enum Web3Browser { } export const getWeb3BrowserName = (newProvider: provider): Web3Browser => { + /* + // Check for mobile + const { userAgent: ua } = navigator + const isIOS = ua.includes('iPhone') // “iPhone OS” + const isAndroid = ua.includes('Android') + */ + // tslint:disable:no-any if ((newProvider as any).isToshi) { // Toshi has become Coinbase wallet diff --git a/src/lib/ethereum/contract.ts b/src/lib/ethereum/contract.ts new file mode 100644 index 00000000..26e92a9f --- /dev/null +++ b/src/lib/ethereum/contract.ts @@ -0,0 +1,21 @@ +import { RenNetworkDetails } from "@renproject/contracts"; +import Web3 from "web3"; + +import { DarknodePayment } from "./contracts/bindings/DarknodePayment"; +import { DarknodePaymentStore } from "./contracts/bindings/DarknodePaymentStore"; +import { DarknodeRegistry } from "./contracts/bindings/DarknodeRegistry"; + +export const getDarknodeRegistry = (web3: Web3, renNetwork: RenNetworkDetails): DarknodeRegistry => new (web3.eth.Contract)( + renNetwork.addresses.ren.DarknodeRegistry.abi, + renNetwork.addresses.ren.DarknodeRegistry.address +); + +export const getDarknodePayment = (web3: Web3, renNetwork: RenNetworkDetails): DarknodePayment => new (web3.eth.Contract)( + renNetwork.addresses.ren.DarknodePayment.abi, + renNetwork.addresses.ren.DarknodePayment.address +); + +export const getDarknodePaymentStore = (web3: Web3, renNetwork: RenNetworkDetails): DarknodePaymentStore => new (web3.eth.Contract)( + renNetwork.addresses.ren.DarknodePaymentStore.abi, + renNetwork.addresses.ren.DarknodePaymentStore.address +); diff --git a/src/lib/ethereum/contractReads.spec.ts b/src/lib/ethereum/contractReads.spec.ts new file mode 100644 index 00000000..805a13c6 --- /dev/null +++ b/src/lib/ethereum/contractReads.spec.ts @@ -0,0 +1,16 @@ +import { RenNetworkDetails } from "@renproject/contracts"; +import Web3 from "web3"; + +import { createWeb3, Provider } from "../../test/globalSetup"; +import { darknodeIDBase58ToHex } from "../darknode/darknodeID"; +import { getDarknodeStatus, RegistrationStatus } from "./contractReads"; + +let web3: Web3, network: RenNetworkDetails, provider: Provider; +beforeAll(async () => ({ web3, network, provider } = await createWeb3())); +afterAll(() => provider.engine.stop()); + +test("getDarknodeStatus", async () => { + const darknodeID = darknodeIDBase58ToHex("8MJpA1rXYMPTeJoYjsFBHJcuYBe7zP"); + (await getDarknodeStatus(web3, network, darknodeID)) + .should.equal(RegistrationStatus.Unregistered); +}); diff --git a/src/lib/ethereum/contractReads.ts b/src/lib/ethereum/contractReads.ts new file mode 100644 index 00000000..c97ff4b7 --- /dev/null +++ b/src/lib/ethereum/contractReads.ts @@ -0,0 +1,838 @@ +import { mainnet, RenNetworkDetails } from "@renproject/contracts"; +import { Currency } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; +import BN from "bn.js"; +import { OrderedMap, OrderedSet } from "immutable"; +import Web3 from "web3"; +import { Block } from "web3-eth"; +import { sha3, toChecksumAddress } from "web3-utils"; + +import { retryNTimes } from "../../components/renvmPage/renvmContainer"; +import { getLightnode } from "../../components/overviewPage/mapContainer"; +import { DarknodesState } from "../../store/applicationState"; +import { darknodeIDHexToBase58 } from "../darknode/darknodeID"; +import { queryStat } from "../darknode/jsonrpc"; +import { awaitOr, safePromiseAllList, safePromiseAllMap } from "../general/promiseAll"; +import { _catchBackgroundException_, _noCapture_ } from "../react/errors"; +import { getDarknodePayment, getDarknodeRegistry } from "./contract"; +import { NewTokenDetails, OldToken, OldTokenDetails, Token, TokenPrices } from "./tokens"; + +export const NULL = "0x0000000000000000000000000000000000000000"; + +// Remove 0x prefix from a hex string +export const strip0x = (hex: string) => hex.substring(0, 2) === "0x" ? hex.slice(2) : hex; + +// Add a 0x prefix to a hex value, converting to a string first +export const Ox = (hex: string | Buffer) => { + const hexString = typeof hex === "string" ? hex : hex.toString("hex"); + return hexString.substring(0, 2) === "0x" ? hexString : `0x${hexString}`; +}; + +//////////////////////////////////////////////////////////////////////////////// +// Darknode Registry contract ////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +/** + * Fetches the minimum bond from the Darknode Registry contract. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @returns A promise to the minimum bond as a BigNumber. + */ +export const getMinimumBond = async (web3: Web3, renNetwork: RenNetworkDetails): Promise => { + try { + return await retryNTimes(async () => { + const minimumBond = (await getDarknodeRegistry(web3, renNetwork).methods.minimumBond().call()); + return new BigNumber((minimumBond).toString()); + }, 5); + } catch (error) { + _catchBackgroundException_(new Error(`Unable to retrieve minimum bond${error && error.message ? `: ${error.message}` : ``}`), "Error in contractReads > getMinimumBond"); + return new BigNumber(renNetwork.name === "chaosnet" ? "10000000000000000000000" : "100000000000000000000000"); + } +}; + +/** + * Fetches a darknode's public key from the Darknode Registry contract. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @returns A promise to the public key as a hex string. + */ +const getDarknodePublicKey = async (web3: Web3, renNetwork: RenNetworkDetails, darknodeID: string): Promise => { + try { + return await retryNTimes(async () => { + const publicKey = await getDarknodeRegistry(web3, renNetwork).methods.getDarknodePublicKey(darknodeID).call(); + if (publicKey === null) { + throw new Error("Public key is NULL"); + } + return publicKey; + }, 5); + } catch (error) { + _catchBackgroundException_(new Error(`Unable to retrieve darknode public key${error && error.message ? `: ${error.message}` : ``}`), "Error in contractReads > getDarknodePublicKey, getDarknodeRegistry"); + return NULL; + } +}; + +/** + * Fetches a darknode's operator address from the Darknode Registry contract. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @returns A promise to the operator as a hex string. + */ +const getDarknodeOperator = async (web3: Web3, renNetwork: RenNetworkDetails, darknodeID: string): Promise => { + const owner = await retryNTimes(async () => await getDarknodeRegistry(web3, renNetwork).methods.getDarknodeOwner(darknodeID).call(), 5); + if (owner === null) { + _catchBackgroundException_(_noCapture_(new Error("Unable to retrieve darknode owner")), "Error in contractReads > getDarknodeOperator, getDarknodeRegistry"); + return NULL; + } + return owner; +}; + +export interface DarknodeCounts { + currentDarknodeCount: number; + previousDarknodeCount: number; + nextDarknodeCount: number; +} + +export const getDarknodeCounts = async (web3: Web3, renNetwork: RenNetworkDetails): Promise => { + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + const currentEpoch = await retryNTimes(async () => await darknodeRegistry.methods.numDarknodes().call(), 5); + if (currentEpoch === null) { throw _noCapture_(new Error("Unable to retrieve darknode count")); } + const previousEpoch = await retryNTimes(async () => await darknodeRegistry.methods.numDarknodesPreviousEpoch().call(), 5); + if (previousEpoch === null) { throw _noCapture_(new Error("Unable to retrieve darknode count")); } + const nextEpoch = await retryNTimes(async () => await darknodeRegistry.methods.numDarknodesNextEpoch().call(), 5); + if (nextEpoch === null) { throw _noCapture_(new Error("Unable to retrieve darknode count")); } + return { + currentDarknodeCount: new BigNumber(currentEpoch.toString()).toNumber(), + previousDarknodeCount: new BigNumber(previousEpoch.toString()).toNumber(), + nextDarknodeCount: new BigNumber(nextEpoch.toString()).toNumber(), + }; +}; + +export enum RegistrationStatus { + Unknown = "", + Unregistered = "unregistered", + RegistrationPending = "registration pending", + Registered = "registered", + DeregistrationPending = "deregistration pending", + Deregistered = "awaiting refund period", + Refundable = "refundable", +} + +/** + * Retrieves the registration status of a darknode. + * + * It can be one of Unregistered, RegistrationPending, Registered, + * DeregistrationPending, Deregistered or Refundable. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @param darknodeID The ID of the darknode as a hex string. + * @returns A promise to the registration status. + */ +export const getDarknodeStatus = async (web3: Web3, renNetwork: RenNetworkDetails, darknodeID: string): Promise => { + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + + const [ + isPendingRegistration, + isPendingDeregistration, + isDeregisterable, + isRefunded, + isRefundable, + ] = await Promise.all([ + retryNTimes(async () => darknodeRegistry.methods.isPendingRegistration(darknodeID).call(), 5), + retryNTimes(async () => darknodeRegistry.methods.isPendingDeregistration(darknodeID).call(), 5), + retryNTimes(async () => darknodeRegistry.methods.isDeregisterable(darknodeID).call(), 5), + retryNTimes(async () => darknodeRegistry.methods.isRefunded(darknodeID).call(), 5), + retryNTimes(async () => darknodeRegistry.methods.isRefundable(darknodeID).call(), 5), + ]); + + if (isRefunded) { + return RegistrationStatus.Unregistered; + } else if (isPendingRegistration) { + return RegistrationStatus.RegistrationPending; + } else if (isDeregisterable) { + return RegistrationStatus.Registered; + } else if (isPendingDeregistration) { + return RegistrationStatus.DeregistrationPending; + } else if (isRefundable) { + return RegistrationStatus.Refundable; + } else { + return RegistrationStatus.Deregistered; + } +}; + +/** + * Estimates the number of seconds per block for the network. + * + * @param web3 A Web3 instance. + * @returns A promise to the estimate or null. + */ +export const calculateSecondsPerBlock = async ( + web3: Web3, +): Promise => { + const sampleSize = 1000; + + const fetchedBlockNumber = await web3.eth.getBlockNumber(); + let currentBlockNumber = fetchedBlockNumber; + let currentBlock: Block | null = null; + // If current block isn't know yet, try previous block, up to 10 times + while (currentBlock === null && currentBlockNumber > fetchedBlockNumber - 10) { + currentBlock = await web3.eth.getBlock(currentBlockNumber); + currentBlockNumber -= 1; + } + const previousBlock: Block | null = await web3.eth.getBlock(currentBlockNumber - sampleSize) as Block | null; + + if (currentBlock !== null && previousBlock !== null) { + const currentTimestamp = parseInt(currentBlock.timestamp.toString(), 10); + const previousTimestamp = parseInt(previousBlock.timestamp.toString(), 10); + return Math.floor((currentTimestamp - previousTimestamp) / sampleSize); + } + return null; +}; + +export const HistoryIterations = 5; + +export enum HistoryPeriod { + Day = 60 * 60 * 24, + Week = Day * 7, + Month = Week * 4, + HalfYear = Week * 26, + Year = Week * 52, +} + +/** + * Given a history period, retrieves the darknode's balance history for + * intervals in the period. + * + * @param web3 A Web3 instance. + * @param darknodeID The ID of the darknode as a hex string. + * @param previousHistory The previous data-points so we don't repeat requests. + * @param historyPeriod The history period to fetch the balance history for. + * @param secondsPerBlock An estimate of the time between blocks in the network. + * @returns Returns a promise to a map from block numbers to the corresponding + * balance. + */ +export const fetchDarknodeBalanceHistory = async ( + web3: Web3, + darknodeID: string, + previousHistory: OrderedMap | null, + historyPeriod: HistoryPeriod, + secondsPerBlock: number, +): Promise> => { + let balanceHistory = previousHistory || OrderedMap(); + + // If the page is kept open, the history data will keep growing, so we limit + // it to 200 entries. + if (balanceHistory.size > 200) { + balanceHistory = OrderedMap(); + } + + const currentBlock = await web3.eth.getBlockNumber(); + + const jump = Math.floor((historyPeriod / secondsPerBlock) / HistoryIterations); + + for (let i = 0; i < HistoryIterations; i++) { + // Move back by `jump` blocks + let block = currentBlock - i * jump; + + // ... + block = block - block % jump; + + if (!balanceHistory.has(block)) { + const blockBalance = await web3.eth.getBalance(darknodeID, block) as string | null; + + if (blockBalance !== null) { + const balance = new BigNumber(blockBalance.toString()); + balanceHistory = balanceHistory.set(block, balance); + } + } + } + + // Also add most recent block + if (!balanceHistory.has(currentBlock)) { + const currentBalance = await web3.eth.getBalance(darknodeID, currentBlock) as string | null; + + if (currentBalance !== null) { + const balance = new BigNumber(currentBalance.toString()); + balanceHistory = balanceHistory.set(currentBlock, balance); + } + } + + balanceHistory = balanceHistory.sortBy((_: BigNumber, value: number) => value); + + return balanceHistory; +}; + +/** + * Fetches all the darknodes from the Darknode Registry contract. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @returns A promise to the list of all darknode IDs (as hex string). + */ +export const getAllDarknodes = async (web3: Web3, renNetwork: RenNetworkDetails): Promise => { + const batchSize = 10; + + const allDarknodes = []; + let lastDarknode = NULL; + const filter = (address: string) => address !== NULL && address !== lastDarknode; + do { + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + const darknodes = await retryNTimes(async () => await darknodeRegistry.methods.getDarknodes(lastDarknode, batchSize.toString()).call(), 5); + if (darknodes === null) { + throw _noCapture_(new Error("Error calling 'darknodeRegistry.methods.getDarknodes'")); + } + allDarknodes.push(...darknodes.filter(filter)); + [lastDarknode] = darknodes.slice(-1); + } while (lastDarknode !== NULL); + + return allDarknodes; +}; + +/** + * Find the darknodes by reading the logs of the Darknode Registry. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @param fromBlock The starting block to look at logs for. + * @returns An immutable set of darknode IDs (as hex strings). + */ +const retrieveDarknodesInLogs = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + fromBlock: string | number, + operatorAddress: string, +) => { + let darknodes = OrderedSet(); + + /** + * Sample log: + * ```json + * { + * address: "0x75Fa8349fc9C7C640A4e9F1A1496fBB95D2Dc3d5", + * blockHash: "0xfab9c0e4d7ccca3e56d6961fbe17917923898828b3f929093e6b976b8727db39", + * blockNumber: 9740948, + * data: "0x000000000000000000000000945458e071eca54bb534d8ac7c8cd1a3eb318d92000000000000000000000000000000000000\ + * 00000000152d02c7e14af6800000", + * id: "log_98d2346b", + * logIndex: 2, + * removed: false, + * topics: ["0xd2819ba4c736158371edf0be38fd8d1fc435609832e392f118c4c79160e5bd7b"], + * transactionHash: "0x8ed0e53dffda6c356e25cb1ac3ebe7a69bcab8ebf668a7b2e770480bdb47598b", + * transactionIndex: 2, + * transactionLogIndex: "0x2", + * type: "mined", + * } + * ``` + */ + + let recentRegistrationEvents = await web3.eth.getPastLogs({ + address: renNetwork.addresses.ren.DarknodeRegistry.address, + fromBlock, + toBlock: "latest", + // topics: [sha3("LogDarknodeRegistered(address,uint256)"), "0x000000000000000000000000" + + // address.slice(2), null, null] as any, + topics: [sha3("LogDarknodeRegistered(address,uint256)")], + }); + const recentRegistrationEvents2 = await web3.eth.getPastLogs({ + address: renNetwork.addresses.ren.DarknodeRegistry.address, + fromBlock, + toBlock: "latest", + // topics: [sha3("LogDarknodeRegistered(address,uint256)"), "0x000000000000000000000000" + + // address.slice(2), null, null] as any, + topics: [sha3("LogDarknodeRegistered(address,address,uint256)"), "0x000000000000000000000000" + strip0x(operatorAddress)], + }); + recentRegistrationEvents = recentRegistrationEvents.concat(recentRegistrationEvents2); + for (const event of recentRegistrationEvents) { + // The log data returns back like this: + // 0x000000000000000000000000945458e071eca54bb534d8ac7c8cd1a3eb318d92000000000000000000000000000000000000000000\ + // 00152d02c7e14af6800000 + // and we want to extract this: 0x945458e071eca54bb534d8ac7c8cd1a3eb318d92 (20 bytes, 40 characters long) + let darknodeID; + let operator; + if (event.topics.length === 3) { + darknodeID = toChecksumAddress(`0x${(event.topics[2] as string).substr(26, 40)}`); + operator = toChecksumAddress(`0x${(event.topics[1] as string).substr(26, 40)}`); + } else { + darknodeID = toChecksumAddress(`0x${event.data.substr(26, 40)}`); + } + darknodes = darknodes.add({ darknodeID, operator }); + } + + // Note: Deregistration events are not included because we are unable to retrieve the operator + // const recentDeregistrationEvents = await web3.eth.getPastLogs({ + // address: contracts.DarknodeRegistry.address, + // fromBlock: renNetwork.addresses.ren.DarknodeRegistry.block || "0x600000", + // toBlock: "latest", + // topics: [sha3("LogDarknodeDeregistered(address)"), null], + // }); + // for (const event of recentDeregistrationEvents) { + // const darknodeID = toChecksumAddress("0x" + event.data.substr(26, 40)); + // darknodes.push(darknodeID); + // } + + return darknodes; +}; + +/** + * Find the darknodes for an operator. + * + * Currently, the LogDarknodeRegistered logs don't include the registrar, so + * instead we loop through every darknode and get it's owner first. + * This would be a lot faster if the logs indexed the operator! 🤦 + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @param operatorAddress The address of the operator to look up darknodes for. + * @param onDarknode An optional callback to retrieve darknodes as they are + * found, instead of waiting for all of them to be returned together. + * @returns An immutable set of darknode IDs (as hex strings). + */ +export const getOperatorDarknodes = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + operatorAddress: string, + reportProgress?: (progress: number, total: number) => void, + onDarknode?: (darknodeID: string) => void, +): Promise> => { + // Skip calling getAllDarknodes - they will all be in the logs as well. + let darknodes = OrderedSet( + // Retrieve currently registered darknodes. + // await getAllDarknodes(web3, renNetwork) + ); + + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + + // Retrieve darknodes that are pending registration. + + // Get Registration events. + + // We may want to only look at the current epoch first, to retrieve pending + // registrations, before looking for deregistrations across all blocks. + // Only look from the last epoch, since we are + // only interested in newly registered darknodes. + // const epoch = await darknodeRegistry.methods.currentEpoch().call(); + // const fromBlock = epoch ? `0x${new BigNumber(epoch.blocknumber.toString()).toString(16)}` : renNetwork.addresses.ren.DarknodeRegistry.block || "0x00"; + + operatorAddress = toChecksumAddress(operatorAddress); + + const fromBlock = renNetwork.addresses.ren.DarknodeRegistry.block || "0x00"; + + darknodes = darknodes.concat(await retrieveDarknodesInLogs(web3, renNetwork, fromBlock, operatorAddress)); + + const operatorPromises = darknodes.map(async ({ operator, darknodeID }: { operator: string, darknodeID: string }) => { + if (operator) { + return [darknodeID, operator]; + } else { + return [darknodeID, await retryNTimes(async () => await darknodeRegistry.methods.getDarknodeOwner(darknodeID).call(), 5)] as [string, string]; + } + }).toArray(); + + let operatorDarknodes = OrderedSet(); + + for (let i = 0; i < operatorPromises.length; i++) { + if (reportProgress) { reportProgress(i, operatorPromises.length); } + const [darknodeID, operator] = await operatorPromises[i]; + if (operator.toLowerCase() === operatorAddress.toLowerCase() && !operatorDarknodes.contains(operatorAddress)) { + operatorDarknodes = operatorDarknodes.add(darknodeID); + if (onDarknode) { onDarknode(darknodeID); } + } + } + + if (reportProgress) { reportProgress(operatorPromises.length, operatorPromises.length); } + + return operatorDarknodes; +}; + +//////////////////////////////////////////////////////////////////////////////// +// Darknode Reward Vault contract ////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Sum up fees into the total ETH value (in wei). +const sumUpFeeMap = ( + feesEarned: OrderedMap, + tokenPrices: TokenPrices, +): [BigNumber, OrderedMap] => { + + let totalEth = new BigNumber(0); + + const feesEarnedInEth = NewTokenDetails.map((tokenDetails, token) => { + const price = tokenPrices.get(token, undefined); + const decimals = tokenDetails ? new BigNumber(tokenDetails.decimals.toString()).toNumber() : 0; + const inEth = feesEarned.get(token, new BigNumber(0)) + .div(Math.pow(10, decimals)) + .multipliedBy(price ? price.get(Currency.ETH, 0) : 0); + totalEth = totalEth.plus(inEth); + return inEth; + }); + + // Convert to wei + return [totalEth.multipliedBy(new BigNumber(10).pow(18)), feesEarnedInEth]; +}; + +/** + * Retrieves information about the pending rewards in the Darknode Payment + * contract. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @param tokenPrices A TokenPrices map to convert the total in ETH. + * @returns `{ + * pendingRewards: For each cycle, a map from tokens to rewards + * currentCycle: The current cycle (as a block number) + * previousCycle: The previous cycle (as a block number) + * cycleTimeout: The earliest the current cycle could end (as a block number) + * pendingTotalInEth: For each cycle, The pending rewards added up as ETH + * }` + */ +export const fetchCycleAndPendingRewards = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + tokenPrices: TokenPrices | null, +) => { + const darknodePayment = getDarknodePayment(web3, renNetwork); + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + + let pendingRewards = OrderedMap>(); + + const πCurrentCycle = retryNTimes(async () => await darknodePayment.methods.currentCycle().call(), 5) as Promise; + const πPreviousCycle = retryNTimes(async () => await darknodePayment.methods.previousCycle().call(), 5) as Promise; + + const πEpoch = retryNTimes(async () => await darknodeRegistry.methods.currentEpoch().call(), 5); + const πEpochInterval = retryNTimes(async () => await darknodeRegistry.methods.minimumEpochInterval().call(), 5); + + const πPrevious = safePromiseAllMap( + NewTokenDetails.map(async (_tokenDetails, token) => { + try { + const address = token === Token.ETH ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : renNetwork.addresses.tokens[token].address; + const previousCycleRewardShareBN = await retryNTimes(async () => await darknodePayment.methods.previousCycleRewardShare(address).call(), 5); + if (previousCycleRewardShareBN === null) { + return new BigNumber(0); + } + return new BigNumber(previousCycleRewardShareBN.toString()); + } catch (error) { + console.error(`Error fetching rewards for ${token}`, error); + return new BigNumber(0); + } + }).toOrderedMap(), + new BigNumber(0), + ); + + const currentShareCount = await retryNTimes(async () => await darknodeRegistry.methods.numDarknodesPreviousEpoch().call(), 5) + .then((bn: (BN | number | string | null)) => bn === null ? null : new BigNumber(bn.toString())); + const πCurrent = safePromiseAllMap( + NewTokenDetails.map(async (_tokenDetails, token) => { + if (currentShareCount === null || currentShareCount.isZero()) { + return new BigNumber(0); + } + try { + const address = token === Token.ETH ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : renNetwork.addresses.tokens[token].address; + const currentCycleRewardPool = await retryNTimes(async () => await darknodePayment.methods.currentCycleRewardPool(address).call(), 5); + if (currentCycleRewardPool === null) { + return new BigNumber(0); + } + return new BigNumber((currentCycleRewardPool).toString()).div(currentShareCount); + } catch (error) { + console.error(`Error fetching rewards for ${token}`, error); + return new BigNumber(0); + } + } + ).toOrderedMap(), + new BigNumber(0), + ); + + const previous = await πPrevious; + const previousCycle = await awaitOr(πPreviousCycle, null); + if (previousCycle !== null && previousCycle !== undefined) { + pendingRewards = pendingRewards.set(previousCycle.toString(), previous); + } + + const current = await πCurrent; + const currentCycle = await awaitOr(πCurrentCycle, null); + if (currentCycle !== null && currentCycle !== undefined) { + pendingRewards = pendingRewards.set(currentCycle.toString(), current); + } + + const epoch = await πEpoch; + const minimumEpochInterval = await πEpochInterval; + const cycleTimeout = !epoch ? new BigNumber(0) : new BigNumber(epoch.blocktime).plus(new BigNumber(minimumEpochInterval || 0)); + + // const cycleTimeoutBN = await darknodePayment.methods.cycleTimeout().call(); + // const cycleTimeout = cycleTimeoutBN ? new BigNumber(cycleTimeoutBN.toString()) : null; + + let pendingTotalInEth = null; + let pendingRewardsInEth = null; + if (tokenPrices) { + const [previousTotal, previousInEth] = sumUpFeeMap(previous, tokenPrices); + const [currentTotal, currentInEth] = sumUpFeeMap(current, tokenPrices); + pendingTotalInEth = OrderedMap(); + pendingRewardsInEth = OrderedMap>(); + if (previousCycle !== null && previousCycle !== undefined) { + pendingTotalInEth = pendingTotalInEth.set(previousCycle.toString(), previousTotal); + pendingRewardsInEth = pendingRewardsInEth.set(previousCycle.toString(), previousInEth); + } + if (currentCycle !== null && currentCycle !== undefined) { + pendingTotalInEth = pendingTotalInEth.set(currentCycle.toString(), currentTotal); + pendingRewardsInEth = pendingRewardsInEth.set(currentCycle.toString(), currentInEth); + } + } + + return { + pendingRewards, + currentCycle, + previousCycle, + cycleTimeout, + pendingTotalInEth, + pendingRewardsInEth, + currentShareCount, + }; +}; + +/** + * Retrieves the balances from the old DarknodeRewardVault contract, which is + * only deployed on mainnet. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @param darknodeID The ID of the darknode as a hex string. + * @returns Returns a promise to an immutable map from token codes to balances + * as BigNumbers. + */ +export const getOldBalances = async ( + web3: Web3, + renNetwork: typeof mainnet, + darknodeID: string, +): Promise> => { + + const contract = new (web3.eth.Contract)( + renNetwork.addresses.ren.DarknodeRewardVault.abi, + renNetwork.addresses.ren.DarknodeRewardVault.address, + ); + + let feesEarned = OrderedMap(); + + const balances = OldTokenDetails.map(async (_tokenDetails, token) => { + + const balance = new BigNumber(await retryNTimes(async () => await contract.methods.darknodeBalances(darknodeID, renNetwork.addresses.oldTokens[token].address).call(), 5)); + + return { + balance, + token, + }; + }).valueSeq(); + // TODO: Don't use Promise.all + const res = await Promise.all(balances); + + for (const { balance, token } of res) { + feesEarned = feesEarned.set(token, balance); + } + + return feesEarned; +}; + +//////////////////////////////////////////////////////////////////////////////// +// Darknode Payment contract /////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +/** + * Retrieves the balances from the DarknodePayment contract. + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @param darknodeID The ID of the darknode as a hex string. + * @returns Returns a promise to an immutable map from token codes to balances + * as BigNumbers. + */ +const getBalances = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + darknodeID: string, +): Promise> => { + const darknodePayment = getDarknodePayment(web3, renNetwork); + + let feesEarned = OrderedMap(); + + // const address = (await web3.eth.getAccounts())[0]; + + const balances = await safePromiseAllList( + NewTokenDetails.map(async (_tokenDetails, token) => { + let balance1; + try { + const balance1Call = await retryNTimes(async () => await darknodePayment.methods.darknodeBalances(darknodeID, renNetwork.addresses.tokens[token].address).call(), 5); + balance1 = new BigNumber((balance1Call || "0").toString()); + } catch (error) { + _catchBackgroundException_(error, "Error in contractReads > darknodeBalances"); + balance1 = new BigNumber(0); + } + // const balance2 = tokenDetails.wrapped ? await new (web3.eth.Contract)( + // contracts.WarpGateToken.abi, + // tokenDetails.address, + // ).methods.balanceOf(address).call() : new BigNumber(0); + + return { + balance: balance1, // .plus(balance2), + token: token as Token | null, + }; + }).valueSeq().toList(), + { + balance: new BigNumber(0), + token: null, + } + ); + + for (const { balance, token } of balances.toArray()) { + if (token) { + feesEarned = feesEarned.set(token, balance); + } + } + + return feesEarned; +}; + +export enum DarknodeFeeStatus { + BLACKLISTED = "BLACKLISTED", + CLAIMED = "CLAIMED", + NOT_CLAIMED = "NOT_CLAIMED", + NOT_WHITELISTED = "NOT_WHITELISTED", +} + +export const getDarknodeFees = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + darknodeID: string, + tokenPrices: TokenPrices | null, +) => { + // Get earned fees + const feesEarned = await getBalances(web3, renNetwork, darknodeID); + let oldFeesEarned = OrderedMap(); + if (renNetwork.name === "mainnet") { + oldFeesEarned = await getOldBalances(web3, renNetwork as typeof mainnet, darknodeID); + } + let feesEarnedTotalEth = new BigNumber(0); + if (tokenPrices) { + // + // tslint:disable-next-line: whitespace + const [oldFeesInEth,] = sumUpFeeMap(oldFeesEarned, tokenPrices); + // tslint:disable-next-line: whitespace + const [newFeesInEth,] = sumUpFeeMap(feesEarned, tokenPrices); + feesEarnedTotalEth = newFeesInEth.plus(oldFeesInEth); + } + + return { feesEarned, oldFeesEarned, feesEarnedTotalEth }; +}; + +export const getDarknodeCycleRewards = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + darknodeID: string, + registrationStatus: RegistrationStatus, +) => { + // Cycle status //////////////////////////////////////////////////////////// + + const darknodePayment = getDarknodePayment(web3, renNetwork); + + const currentCycleBN = await retryNTimes(async () => await darknodePayment.methods.currentCycle().call(), 5); + const previousCycleBN = await retryNTimes(async () => await darknodePayment.methods.previousCycle().call(), 5); + // const blacklisted = await darknodePaymentStore.methods.isBlacklisted(darknodeID).call(); + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + let currentStatus; + let previousStatus; + const isRegisteredInPreviousEpoch = await retryNTimes(async () => await darknodeRegistry.methods.isRegisteredInPreviousEpoch(darknodeID).call(), 5); + currentStatus = registrationStatus === RegistrationStatus.Registered ? DarknodeFeeStatus.NOT_CLAIMED : DarknodeFeeStatus.NOT_WHITELISTED; + const cycleStartTimeBN = await retryNTimes(async () => await darknodePayment.methods.cycleStartTime().call(), 5); + if (!cycleStartTimeBN || !isRegisteredInPreviousEpoch) { // || whitelistedTime.gte(cycleStartTimeBN.toString())) { + previousStatus = DarknodeFeeStatus.NOT_WHITELISTED; + } else { + if (previousCycleBN === null) { + previousStatus = DarknodeFeeStatus.CLAIMED; + } else { + const claimed = await retryNTimes(async () => await darknodePayment.methods.rewardClaimed(darknodeID, previousCycleBN.toString()).call(), 5); + if (claimed) { + previousStatus = DarknodeFeeStatus.CLAIMED; + } else { + previousStatus = DarknodeFeeStatus.NOT_CLAIMED; + } + } + } + + let cycleStatus = OrderedMap(); + if (currentCycleBN !== null) { + cycleStatus = cycleStatus.set(currentCycleBN.toString(), currentStatus); + } + if (previousCycleBN !== null) { + cycleStatus = cycleStatus.set(previousCycleBN.toString(), previousStatus); + } + + return cycleStatus; +}; + +/** + * Fetches various pieces of information about a darknode, including: + * 1. publicKey, + * 2. balances and fees + * 3. its status + * 4. its gas usage information + * 5. its network information (NOTE: not implemented yet) + * + * @param web3 A Web3 instance. + * @param renNetwork A Ren network object. + * @param darknodeID The ID of the darknode as a hex string. + * @param tokenPrices + * @returns A promise to the darknode state record. + */ +export const fetchDarknodeDetails = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + darknodeID: string, + tokenPrices: TokenPrices | null, +): Promise => { + darknodeID = toChecksumAddress(darknodeID.toLowerCase()); + + // Get eth Balance + const πEthBalance = web3.eth.getBalance(darknodeID) + .then((ethBalanceBN) => ethBalanceBN ? new BigNumber(ethBalanceBN.toString()) : new BigNumber(0)) + .catch(() => new BigNumber(0)); + + const πFees = getDarknodeFees(web3, renNetwork, darknodeID, tokenPrices); + + // Get darknode operator and public key + const πOperator = getDarknodeOperator(web3, renNetwork, darknodeID); + const πPublicKey = getDarknodePublicKey(web3, renNetwork, darknodeID); + + // Call queryStats + const πNodeStatistics = queryStat(getLightnode(renNetwork), darknodeIDHexToBase58(darknodeID)) + .catch((error) => /* ignore */ null); + + // Get registration status + const registrationStatus = await getDarknodeStatus(web3, renNetwork, darknodeID) + .catch(error => { + _catchBackgroundException_(error, "Error in contractReads > getDarknodeStatus"); + return RegistrationStatus.Unknown; + }); + + const πCycleStatuses = getDarknodeCycleRewards(web3, renNetwork, darknodeID, registrationStatus); + + const { feesEarned, oldFeesEarned, feesEarnedTotalEth } = await πFees; + + return new DarknodesState({ + ID: darknodeID, + multiAddress: "" as string, + publicKey: await πPublicKey, + ethBalance: await πEthBalance, + feesEarned, + oldFeesEarned, + feesEarnedTotalEth, + + cycleStatus: await πCycleStatuses, + averageGasUsage: 0, + lastTopUp: null, + expectedExhaustion: null, + peers: 0, + registrationStatus, + operator: await πOperator, + + nodeStatistics: await πNodeStatistics, + }); +}; diff --git a/src/lib/ethereum/contractWrites.spec.ts b/src/lib/ethereum/contractWrites.spec.ts new file mode 100644 index 00000000..54f91a20 --- /dev/null +++ b/src/lib/ethereum/contractWrites.spec.ts @@ -0,0 +1,76 @@ +import { RenNetworkDetails } from "@renproject/contracts"; +import Web3 from "web3"; + +import { createWeb3, Provider } from "../../test/globalSetup"; +import { darknodeIDBase58ToHex } from "../darknode/darknodeID"; +import { getDarknodeRegistry } from "./contract"; +import { + getDarknodeStatus, getMinimumBond, getOperatorDarknodes, RegistrationStatus, +} from "./contractReads"; +import { approveNode, callEpoch, deregisterNode, refundNode, registerNode } from "./contractWrites"; +import { simpleWaitForTX, waitForTX } from "./waitForTX"; + +let web3: Web3, network: RenNetworkDetails, provider: Provider, address: string; +beforeAll(async () => { ({ web3, network, provider, address } = await createWeb3()); }); +afterAll(() => { provider.engine.stop(); }); + +const darknodeID = darknodeIDBase58ToHex("8MJpA1rXYMPTeJoYjsFBHJcuYBe7zQ"); + +test("registering darknode", async () => { + jest.setTimeout(20000); + + const bond = await getMinimumBond(web3, network); + + (await getDarknodeStatus(web3, network, darknodeID)) + .should.equal(RegistrationStatus.Unregistered); + + // Register + await approveNode(web3, network, address, bond, simpleWaitForTX); + + await new Promise((resolve) => registerNode(web3, network, address, darknodeID, "0x00", bond, () => null, resolve, simpleWaitForTX)); + + (await getDarknodeStatus(web3, network, darknodeID)) + .should.equal(RegistrationStatus.RegistrationPending); + + (await getOperatorDarknodes(web3, network, address)).toArray() + .should.deep.equal([darknodeID]); + + await callEpoch(web3, network, address, simpleWaitForTX); + + (await getDarknodeStatus(web3, network, darknodeID)) + .should.equal(RegistrationStatus.Registered); + + (await getOperatorDarknodes(web3, network, address)).toArray() + .should.deep.equal([darknodeID]); + +}); + +const triggerBlock = async () => { + // tslint:disable-next-line: await-promise + await waitForTX( + // tslint:disable-next-line: no-any + (getDarknodeRegistry(web3, network).methods.minimumBond() as any) + .send({ from: address }) + ); +}; + +test("deregistering darknode", async () => { + // Deregister + await new Promise((resolve) => deregisterNode(web3, network, address, darknodeID, () => null, resolve, simpleWaitForTX)); + + (await getDarknodeStatus(web3, network, darknodeID)) + .should.equal(RegistrationStatus.DeregistrationPending); + + await callEpoch(web3, network, address, simpleWaitForTX); + await triggerBlock(); + await callEpoch(web3, network, address, simpleWaitForTX); + + (await getDarknodeStatus(web3, network, darknodeID)) + .should.equal(RegistrationStatus.Refundable); + + // Refund + await new Promise((resolve) => refundNode(web3, network, address, darknodeID, () => null, resolve, simpleWaitForTX)); + + (await getDarknodeStatus(web3, network, darknodeID)) + .should.equal(RegistrationStatus.Unregistered); +}); diff --git a/src/lib/ethereum/contractWrites.ts b/src/lib/ethereum/contractWrites.ts new file mode 100644 index 00000000..fb0b1d03 --- /dev/null +++ b/src/lib/ethereum/contractWrites.ts @@ -0,0 +1,463 @@ +import { mainnet, RenNetworkDetails } from "@renproject/contracts"; +import { sleep } from "@renproject/react-components"; +import RenSDK, { TxStatus } from "@renproject/ren"; +import BigNumber from "bignumber.js"; +import Web3 from "web3"; +import { TransactionConfig, TransactionReceipt } from "web3-core"; +import { sha3, toChecksumAddress } from "web3-utils"; + +import { retryNTimes } from "../../components/renvmPage/renvmContainer"; +import { _catchInteractionException_, _noCapture_ } from "../react/errors"; +import { getDarknodePayment, getDarknodeRegistry } from "./contract"; +import { AllTokenDetails, OldToken, Token } from "./tokens"; +import { WaitForTX } from "./waitForTX"; + +export const fundNode = async ( + web3: Web3, + address: string, + darknodeID: string, + ethAmountStr: string, + onCancel: () => void, + onDone: () => void, + waitForTX: WaitForTX, +): Promise => { + // Convert eth to wei + const ethAmount = new BigNumber(ethAmountStr); + const weiAmount = ethAmount.times(new BigNumber(10).exponentiatedBy(18)).decimalPlaces(0); + if (weiAmount.isNaN()) { + throw new Error(`Invalid ETH amount ${ethAmountStr} - please try again`); + } + + let resolved = false; + + const call = () => web3.eth.sendTransaction({ + to: darknodeID, + value: weiAmount.toFixed(), + from: address, + }); + + try { + const res = await waitForTX( + call(), + onDone + ); + resolved = true; + return res; + } catch (error) { + if (resolved) { onCancel(); } + throw error; + } +}; + +//////////////////////////////// +// Darknode Registry contract // +//////////////////////////////// + +export const callEpoch = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string, + waitForTX: WaitForTX, + txConfig?: TransactionConfig, +) => { + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + + return await waitForTX( + darknodeRegistry.methods.epoch().send({ ...txConfig, from: address }), + ); +}; + +export const approveNode = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string, + bond: BigNumber, + waitForTX: WaitForTX, +) => { + // tslint:disable-next-line:no-non-null-assertion + const ercContract = new (web3.eth.Contract)(renNetwork.addresses.erc.ERC20.abi, renNetwork.addresses.tokens.REN.address); + + // Check that the user has sufficient REN for bond + let ercBalance; + try { + ercBalance = new BigNumber(await retryNTimes(async () => await ercContract.methods.balanceOf(address).call(), 5)); + } catch (error) { + ercBalance = bond; + _catchInteractionException_(error, "Error in contractWrites.ts: approveNode > balanceOf"); + } + if (ercBalance.lt(bond)) { + throw _noCapture_(new Error("You have insufficient REN to register a darknode.")); + } + + // Check if they've already approved REN + let ercAllowance; + try { + ercAllowance = new BigNumber( + await retryNTimes(async () => await ercContract.methods.allowance(address, renNetwork.addresses.ren.DarknodeRegistry.address).call(), 5), + ); + } catch (error) { + _catchInteractionException_(error, "Error in contractWrites.ts: approveNode > allowance"); + ercAllowance = new BigNumber(0); + } + if (ercAllowance.gte(bond)) { + // Already approved + return; + } + + return waitForTX( + ercContract.methods.approve(renNetwork.addresses.ren.DarknodeRegistry.address, bond.toFixed()).send({ from: address }) + ); +}; + +export const registerNode = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string, + darknodeID: string, + publicKey: string, + bond: BigNumber, + onCancel: () => void, + onDone: () => void, + waitForTX: WaitForTX, +): Promise => { + const hardCodedGas = 500000; + + // tslint:disable-next-line:no-non-null-assertion + const ercContract = new (web3.eth.Contract)(renNetwork.addresses.erc.ERC20.abi, renNetwork.addresses.tokens.REN.address); + + let ercAllowance; + try { + ercAllowance = new BigNumber( + await retryNTimes(async () => await ercContract.methods.allowance(address, renNetwork.addresses.ren.DarknodeRegistry.address).call(), 5) + ); + } catch (error) { + ercAllowance = new BigNumber(0); + _catchInteractionException_(error, "Error in contractWrites.ts: registerNode > allowance"); + } + + let gas: number | undefined = hardCodedGas; + if (ercAllowance.gte(bond)) { + gas = undefined; + } + + let resolved = false; + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + + try { + const params = renNetwork.name === mainnet.name ? [darknodeID, publicKey, bond.toFixed()] : [darknodeID, publicKey]; + const res = await waitForTX( + // @ts-ignore + darknodeRegistry.methods.register(...params).send({ from: address, gas }), + onDone + ); + resolved = true; + return res; + } catch (error) { + if (resolved) { onCancel(); } + throw error; + } +}; + +export const deregisterNode = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string, + darknodeID: string, + onCancel: () => void, + onDone: () => void, + waitForTX: WaitForTX, +): Promise => { + // The node has been registered and can be deregistered. + + let resolved = false; + const darknodeRegistry = new ((web3).eth.Contract)( + renNetwork.addresses.ren.DarknodeRegistry.abi, + renNetwork.addresses.ren.DarknodeRegistry.address + ); + try { + const res = await waitForTX( + darknodeRegistry.methods.deregister(darknodeID).send({ from: address }), + onDone + ); + resolved = true; + return res; + } catch (error) { + if (resolved) { onCancel(); } + throw error; + } +}; + +export const refundNode = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string, + darknodeID: string, + onCancel: () => void, + onDone: () => void, + waitForTX: WaitForTX, +): Promise => { + // The node is awaiting refund. + + let resolved = false; + const darknodeRegistry = getDarknodeRegistry(web3, renNetwork); + + try { + const res = await waitForTX( + darknodeRegistry.methods.refund(darknodeID).send({ from: address }), + onDone + ); + resolved = true; + return res; + } catch (error) { + if (resolved) { onCancel(); } + throw error; + } +}; + +/////////////////////////////// +// Darknode Payment contract // +/////////////////////////////// + +export const claimForNode = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + useFixedGasLimit: boolean, + address: string, + darknodeID: string, + onCancel: () => void, + onDone: () => void, + waitForTX: WaitForTX, +): Promise => { + // Convert eth to wei + + const darknodePayment = getDarknodePayment(web3, renNetwork); + let resolved = false; + + const call = () => darknodePayment.methods.claim(darknodeID).send({ from: address, gas: useFixedGasLimit ? 200000 : undefined }); + + try { + const res = await waitForTX( + call(), + onDone + ); + resolved = true; + return res; + } catch (error) { + if (resolved) { onCancel(); } + throw error; + } +}; + +// export const changeCycle = async ( +// web3: Web3, +// renNetwork: RenNetworkDetails, +// ignoreError: boolean, +// address: string, +// onCancel: () => void, +// onDone: () => void, +// waitForTX: WaitForTX, +// ): Promise => { +// return ""; + +// // // Convert eth to wei + +// // const darknodePayment = getDarknodePayment(web3, renNetwork); + +// // let resolved = false; + +// // // Try to call `changeCycle` as a read function to see if it reverts +// // const cycleTimeoutCall = await darknodePayment.methods.cycleTimeout().call({ from: address }); +// // if (!cycleTimeoutCall) { +// // throw _noCapture_(new Error("Unable to change timeout - please try again")); +// // } +// // const canCall = new BigNumber(cycleTimeoutCall.toString()); +// // if (canCall.isEqualTo(0) || !alreadyPast(canCall.toNumber())) { +// // return ""; +// // } + +// // const call = () => darknodePayment.methods.changeCycle().send({ from: address }); + +// // try { +// // const res = await waitForTX( +// // call(), +// // onDone, +// // ); +// // resolved = true; +// // return res; +// // } catch (error) { +// // if (ignoreError) { +// // resolved = true; +// // return ""; +// // } +// // if (resolved) { onCancel(); } +// // throw error; +// // } +// }; + +export const withdrawOldToken = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string | null, + darknodeID: string, + token: Token | OldToken, + waitForTX: WaitForTX, +) => new Promise(async (resolve, reject) => { + + if (renNetwork.name !== "mainnet") { + throw new Error(`Withdrawing old tokens not supported on network ${renNetwork.name}`); + } + + if (!address) { + throw new Error(`Unable to retrieve account address.`); + } + + const network = renNetwork as typeof mainnet; + + try { + const rewardVault = new (web3.eth.Contract)( + network.addresses.ren.DarknodeRewardVault.abi, + network.addresses.ren.DarknodeRewardVault.address + ); + await waitForTX( + rewardVault.methods.withdraw(darknodeID, network.addresses.oldTokens[token].address).send({ from: address }), + resolve, + ); + } catch (error) { + reject(error); + return; + } +}); + +// export const bridgedToken = (web3: Web3, renNetwork: RenNetworkDetails, address: string): Contract => { +// return new web3.eth.Contract(renNetwork.WarpGateToken.abi, address); +// }; + +// export const btcAddressToHex = (address: string) => `0x${decode58(address).toString("hex")}`; +// export const zecAddressToHex = (address: string) => `0x${decode58(address).toString("hex")}`; + +const burn = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string, + token: Token, + amount: BigNumber, + recipient: string, + waitForTX: WaitForTX, + onStatus: (status: TxStatus) => void, +) => { + const contractDetails = token === Token.BTC ? renNetwork.addresses.shifter.BTCShifter : + token === Token.ZEC ? renNetwork.addresses.shifter.ZECShifter : + token === Token.BCH ? renNetwork.addresses.shifter.BCHShifter : undefined; + if (!contractDetails) { + throw new Error(`Unable to shift out token ${token}`); + } + const contract = new (web3.eth.Contract)(contractDetails.abi, contractDetails._address); + + const sdk = new RenSDK(renNetwork.name); + + const txHash = await waitForTX(contract.methods.shiftOut( + (sdk.utils[token].addressToHex || sdk.Tokens[token].addressToHex)(recipient), // _to + amount.decimalPlaces(0).toFixed(), // _amount in Satoshis + ).send({ from: address }) + ); + + const shiftOut = await sdk.shiftOut({ + // Send BTC from the Ethereum blockchain to the Bitcoin blockchain. + // This is the reverse of shitIn. + sendToken: token === Token.BCH ? RenSDK.Tokens.BCH.Eth2Bch : + Token.ZEC ? RenSDK.Tokens.ZEC.Eth2Zec : + RenSDK.Tokens.BTC.Eth2Btc, + + // The web3 provider to talk to Ethereum + web3Provider: web3.currentProvider, + + // The transaction hash of our contract call + txHash, + }).readFromEthereum(); + + const promiEvent = shiftOut.submitToRenVM(); + promiEvent.on("status", onStatus); + await promiEvent; +}; + +const TransferEventABI = [ + { + indexed: true, + name: "from", + type: "address" + }, { + indexed: true, + name: "to", + type: "address" + }, { + indexed: false, + name: "value", + type: "uint256" + } +]; + +export const withdrawToken = ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string | null, + darknodeID: string, + token: Token | OldToken, + waitForTX: WaitForTX, + onStatus: (status: TxStatus) => void, +) => async (withdrawAddress?: string) => { + + const tokenDetails = AllTokenDetails.get(token); + if (tokenDetails === undefined) { + throw new Error("Unknown token"); + } + + if (!address) { + throw new Error(`Unable to retrieve account address.`); + } + + const darknodePayment = getDarknodePayment(web3, renNetwork); + + if (!tokenDetails) { + throw new Error("Unknown token"); + } + + const tx = await waitForTX(darknodePayment.methods.withdraw(darknodeID, renNetwork.addresses.tokens[token].address).send({ from: address })); + + // let recentRegistrationEvents = await web3.eth.getPastLogs({ + // address: renNetwork.addresses.tokens[token].address, + // fromBlock: txHash, + // toBlock: txHash, + // topics: [,], + // }); + + if (tokenDetails.wrapped) { + if (!withdrawAddress) { + throw new Error("Invalid withdraw address"); + } + + let receipt: TransactionReceipt | undefined; + + while (!receipt || !receipt.logs) { + try { + receipt = await web3.eth.getTransactionReceipt(tx); + } catch (error) { + // Ignore error + } + if (!receipt) { + await sleep(1000); + } + } + + let value = new BigNumber(0); + for (const log of receipt.logs) { + if (log.topics[0] === sha3("Transfer(address,address,uint256)")) { + const event = web3.eth.abi.decodeLog(TransferEventABI, log.data, (log.topics as string[]).slice(1)); + if (toChecksumAddress(event.from) === toChecksumAddress(renNetwork.addresses.ren.DarknodePaymentStore.address) && toChecksumAddress(event.to) === toChecksumAddress(address)) { + value = value.plus(event.value); + } + } + } + + await burn(web3, renNetwork, address, token as Token, value, withdrawAddress, waitForTX, onStatus); + } +}; diff --git a/src/lib/ethereum/contracts/ABIs/ERC20.json b/src/lib/ethereum/contracts/ABIs/ERC20.json deleted file mode 100644 index 98191a56..00000000 --- a/src/lib/ethereum/contracts/ABIs/ERC20.json +++ /dev/null @@ -1,175 +0,0 @@ -[ - { - "constant": false, - "inputs": [ - { - "name": "spender", - "type": "address" - }, - { - "name": "tokens", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "from", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "tokens", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "tokenOwner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "balance", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "tokens", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "tokenOwner", - "type": "address" - }, - { - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "remaining", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "tokens", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "tokenOwner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "tokens", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } -] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodePayment.json b/src/lib/ethereum/contracts/ABIs/mainnet/DarknodePayment.json deleted file mode 100644 index 89040cfd..00000000 --- a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodePayment.json +++ /dev/null @@ -1,587 +0,0 @@ -[{ - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "previousCycleRewardShare", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "registerToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "claim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "cycleStartTime", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "uint256" - }], - "name": "pendingTokens", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "cycleDuration", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_value", - "type": "uint256" - }, { - "name": "_token", - "type": "address" - }], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }, { - "name": "_token", - "type": "address" - }], - "name": "darknodeBalances", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_durationSeconds", - "type": "uint256" - }], - "name": "updateCycleDuration", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "shareCount", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }, { - "name": "", - "type": "uint256" - }], - "name": "rewardClaimed", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "unclaimedRewards", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "uint256" - }], - "name": "registeredTokens", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_addr", - "type": "address" - }], - "name": "updateBlacklister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "changeCycle", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "deregisterToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "currentCycle", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "blacklister", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "registeredTokenIndex", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "cycleTimeout", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_newOwner", - "type": "address" - }], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "previousCycle", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "currentCycleRewardPool", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, { - "name": "_tokens", - "type": "address[]" - }], - "name": "withdrawMultiple", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, { - "name": "_token", - "type": "address" - }], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "inputs": [{ - "name": "_VERSION", - "type": "string" - }, { - "name": "_darknodeRegistry", - "type": "address" - }, { - "name": "_darknodePaymentStore", - "type": "address" - }, { - "name": "_cycleDurationSeconds", - "type": "uint256" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_darknode", - "type": "address" - }, { - "indexed": false, - "name": "_time", - "type": "uint256" - }], - "name": "LogDarknodeBlacklisted", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_darknode", - "type": "address" - }, { - "indexed": false, - "name": "_time", - "type": "uint256" - }], - "name": "LogDarknodeWhitelisted", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_darknode", - "type": "address" - }, { - "indexed": false, - "name": "_cycle", - "type": "uint256" - }], - "name": "LogDarknodeClaim", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_payer", - "type": "address" - }, { - "indexed": false, - "name": "_amount", - "type": "uint256" - }, { - "indexed": false, - "name": "_token", - "type": "address" - }], - "name": "LogPaymentReceived", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_payee", - "type": "address" - }, { - "indexed": false, - "name": "_value", - "type": "uint256" - }, { - "indexed": false, - "name": "_token", - "type": "address" - }], - "name": "LogDarknodeWithdrew", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_newCycle", - "type": "uint256" - }, { - "indexed": false, - "name": "_lastCycle", - "type": "uint256" - }, { - "indexed": false, - "name": "_cycleTimeout", - "type": "uint256" - }], - "name": "LogNewCycle", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_newDuration", - "type": "uint256" - }, { - "indexed": false, - "name": "_oldDuration", - "type": "uint256" - }], - "name": "LogCycleDurationChanged", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_newBlacklister", - "type": "address" - }, { - "indexed": false, - "name": "_oldBlacklister", - "type": "address" - }], - "name": "LogBlacklisterChanged", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_token", - "type": "address" - }], - "name": "LogTokenRegistered", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_token", - "type": "address" - }], - "name": "LogTokenDeregistered", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodePaymentStore.json b/src/lib/ethereum/contracts/ABIs/mainnet/DarknodePaymentStore.json deleted file mode 100644 index 9171e29c..00000000 --- a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodePaymentStore.json +++ /dev/null @@ -1,282 +0,0 @@ -[{ - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "lockedBalances", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "darknodeWhitelistLength", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "isWhitelisted", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "darknodeBlacklist", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "totalBalance", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }, { - "name": "", - "type": "address" - }], - "name": "darknodeBalances", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "darknodeWhitelist", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "whitelist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "availableBalance", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, { - "name": "_token", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }], - "name": "incrementDarknodeBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, { - "name": "_token", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_recipient", - "type": "address" - }], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "isBlacklisted", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "inputs": [{ - "name": "_VERSION", - "type": "string" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodeRegistry.json b/src/lib/ethereum/contracts/ABIs/mainnet/DarknodeRegistry.json deleted file mode 100644 index 06bebbb2..00000000 --- a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodeRegistry.json +++ /dev/null @@ -1,657 +0,0 @@ -[{ - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isPendingRegistration", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "numDarknodesNextEpoch", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }, { - "name": "_publicKey", - "type": "bytes" - }, { - "name": "_bond", - "type": "uint256" - }], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_nextMinimumBond", - "type": "uint256" - }], - "name": "updateMinimumBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "numDarknodes", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "getDarknodeOwner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextSlasher", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isPendingDeregistration", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_start", - "type": "address" - }, { - "name": "_count", - "type": "uint256" - }], - "name": "getPreviousDarknodes", - "outputs": [{ - "name": "", - "type": "address[]" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextMinimumEpochInterval", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "minimumEpochInterval", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_prover", - "type": "address" - }, { - "name": "_challenger1", - "type": "address" - }, { - "name": "_challenger2", - "type": "address" - }], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRefundable", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "previousEpoch", - "outputs": [{ - "name": "epochhash", - "type": "uint256" - }, { - "name": "blocknumber", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextMinimumBond", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_nextMinimumEpochInterval", - "type": "uint256" - }], - "name": "updateMinimumEpochInterval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextMinimumPodSize", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "numDarknodesPreviousEpoch", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [{ - "name": "epochhash", - "type": "uint256" - }, { - "name": "blocknumber", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRegisteredInPreviousEpoch", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isDeregistered", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_nextMinimumPodSize", - "type": "uint256" - }], - "name": "updateMinimumPodSize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "deregister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "getDarknodePublicKey", - "outputs": [{ - "name": "", - "type": "bytes" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "epoch", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "minimumBond", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "slasher", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_slasher", - "type": "address" - }], - "name": "updateSlasher", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "getDarknodeBond", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_newOwner", - "type": "address" - }], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRegistered", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "minimumPodSize", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isDeregisterable", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_start", - "type": "address" - }, { - "name": "_count", - "type": "uint256" - }], - "name": "getDarknodes", - "outputs": [{ - "name": "", - "type": "address[]" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "refund", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRefunded", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "inputs": [{ - "name": "_VERSION", - "type": "string" - }, { - "name": "_renAddress", - "type": "address" - }, { - "name": "_storeAddress", - "type": "address" - }, { - "name": "_minimumBond", - "type": "uint256" - }, { - "name": "_minimumPodSize", - "type": "uint256" - }, { - "name": "_minimumEpochInterval", - "type": "uint256" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_darknodeID", - "type": "address" - }, { - "indexed": false, - "name": "_bond", - "type": "uint256" - }], - "name": "LogDarknodeRegistered", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_darknodeID", - "type": "address" - }], - "name": "LogDarknodeDeregistered", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_owner", - "type": "address" - }, { - "indexed": false, - "name": "_amount", - "type": "uint256" - }], - "name": "LogDarknodeOwnerRefunded", - "type": "event" -}, { - "anonymous": false, - "inputs": [], - "name": "LogNewEpoch", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousMinimumBond", - "type": "uint256" - }, { - "indexed": false, - "name": "nextMinimumBond", - "type": "uint256" - }], - "name": "LogMinimumBondUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousMinimumPodSize", - "type": "uint256" - }, { - "indexed": false, - "name": "nextMinimumPodSize", - "type": "uint256" - }], - "name": "LogMinimumPodSizeUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousMinimumEpochInterval", - "type": "uint256" - }, { - "indexed": false, - "name": "nextMinimumEpochInterval", - "type": "uint256" - }], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousSlasher", - "type": "address" - }, { - "indexed": false, - "name": "nextSlasher", - "type": "address" - }], - "name": "LogSlasherUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }], - "name": "OwnershipRenounced", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodeRewardVault.json b/src/lib/ethereum/contracts/ABIs/mainnet/DarknodeRewardVault.json deleted file mode 100644 index 607eed2f..00000000 --- a/src/lib/ethereum/contracts/ABIs/mainnet/DarknodeRewardVault.json +++ /dev/null @@ -1,219 +0,0 @@ -[ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_darknode", - "type": "address" - }, - { - "name": "_token", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newDarknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_darknode", - "type": "address" - }, - { - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "_VERSION", - "type": "string" - }, - { - "name": "_darknodeRegistry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": false, - "name": "nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "previousOwner", - "type": "address" - } - ], - "name": "OwnershipRenounced", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } -] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/mainnet/WarpGateToken.json b/src/lib/ethereum/contracts/ABIs/mainnet/WarpGateToken.json deleted file mode 100644 index 6241e1ed..00000000 --- a/src/lib/ethereum/contracts/ABIs/mainnet/WarpGateToken.json +++ /dev/null @@ -1,355 +0,0 @@ -[{ - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "spender", - "type": "address" - }, { - "name": "value", - "type": "uint256" - }], - "name": "approve", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_hash", - "type": "bytes32" - }, { - "name": "_r", - "type": "bytes32" - }, { - "name": "_s", - "type": "bytes32" - }, { - "name": "_v", - "type": "uint8" - }], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "from", - "type": "address" - }, { - "name": "to", - "type": "address" - }, { - "name": "value", - "type": "uint256" - }], - "name": "transferFrom", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ - "name": "", - "type": "uint8" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_to", - "type": "bytes" - }, { - "name": "_amount", - "type": "uint256" - }], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "spender", - "type": "address" - }, { - "name": "addedValue", - "type": "uint256" - }], - "name": "increaseAllowance", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "owner", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "spender", - "type": "address" - }, { - "name": "subtractedValue", - "type": "uint256" - }], - "name": "decreaseAllowance", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "to", - "type": "address" - }, { - "name": "value", - "type": "uint256" - }], - "name": "transfer", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "bytes32" - }], - "name": "spent", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_hash", - "type": "bytes32" - }], - "name": "commitment", - "outputs": [{ - "name": "", - "type": "bytes32" - }], - "payable": false, - "stateMutability": "pure", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_hash", - "type": "bytes32" - }, { - "name": "_r", - "type": "bytes32" - }, { - "name": "_s", - "type": "bytes32" - }, { - "name": "_v", - "type": "uint8" - }], - "name": "verifySig", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "owner", - "type": "address" - }, { - "name": "spender", - "type": "address" - }], - "name": "allowance", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "inputs": [{ - "name": "_owner", - "type": "address" - }, { - "name": "_name", - "type": "string" - }, { - "name": "_symbol", - "type": "string" - }, { - "name": "_decimals", - "type": "uint8" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_to", - "type": "address" - }, { - "indexed": false, - "name": "_amount", - "type": "uint256" - }], - "name": "LogMint", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_to", - "type": "bytes" - }, { - "indexed": false, - "name": "_amount", - "type": "uint256" - }], - "name": "LogBurn", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "from", - "type": "address" - }, { - "indexed": true, - "name": "to", - "type": "address" - }, { - "indexed": false, - "name": "value", - "type": "uint256" - }], - "name": "Transfer", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "owner", - "type": "address" - }, { - "indexed": true, - "name": "spender", - "type": "address" - }, { - "indexed": false, - "name": "value", - "type": "uint256" - }], - "name": "Approval", - "type": "event" -}] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/testnet/DarknodePayment.json b/src/lib/ethereum/contracts/ABIs/testnet/DarknodePayment.json deleted file mode 100644 index e2d99150..00000000 --- a/src/lib/ethereum/contracts/ABIs/testnet/DarknodePayment.json +++ /dev/null @@ -1,685 +0,0 @@ -[{ - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "previousCycleRewardShare", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleStartTime", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "", - "type": "uint256" - }], - "name": "pendingTokens", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "", - "type": "uint256" - }], - "name": "pendingDeregisterTokens", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleDuration", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "shareCount", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }, - { - "name": "", - "type": "uint256" - } - ], - "name": "rewardClaimed", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "unclaimedRewards", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "", - "type": "uint256" - }], - "name": "registeredTokens", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCycle", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "blacklister", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "registeredTokenIndex", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleTimeout", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousCycle", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ - "name": "_VERSION", - "type": "string" - }, - { - "name": "_darknodeRegistry", - "type": "address" - }, - { - "name": "_darknodePaymentStore", - "type": "address" - }, - { - "name": "_cycleDuration", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "name": "_time", - "type": "uint256" - } - ], - "name": "LogDarknodeBlacklisted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "name": "_time", - "type": "uint256" - } - ], - "name": "LogDarknodeWhitelisted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_payer", - "type": "address" - }, - { - "indexed": false, - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "name": "_token", - "type": "address" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "_payee", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - }, - { - "indexed": false, - "name": "_token", - "type": "address" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_newCycle", - "type": "uint256" - }, - { - "indexed": false, - "name": "_lastCycle", - "type": "uint256" - }, - { - "indexed": false, - "name": "_cycleTimeout", - "type": "uint256" - } - ], - "name": "LogNewCycle", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_newDuration", - "type": "uint256" - }, - { - "indexed": false, - "name": "_oldDuration", - "type": "uint256" - } - ], - "name": "LogCycleDurationChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_newBlacklister", - "type": "address" - }, - { - "indexed": false, - "name": "_oldBlacklister", - "type": "address" - } - ], - "name": "LogBlacklisterChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_token", - "type": "address" - }], - "name": "LogTokenRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_token", - "type": "address" - }], - "name": "LogTokenDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, - { - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, - { - "name": "_tokens", - "type": "address[]" - } - ], - "name": "withdrawMultiple", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "currentCycleRewardPool", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }, - { - "name": "_token", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "changeCycle", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_value", - "type": "uint256" - }, - { - "name": "_token", - "type": "address" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "claim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "registerToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "deregisterToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_addr", - "type": "address" - }], - "name": "updateBlacklister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_duration", - "type": "uint256" - }], - "name": "updateCycleDuration", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "_newOwner", - "type": "address" - }], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/testnet/DarknodePaymentStore.json b/src/lib/ethereum/contracts/ABIs/testnet/DarknodePaymentStore.json deleted file mode 100644 index 9171e29c..00000000 --- a/src/lib/ethereum/contracts/ABIs/testnet/DarknodePaymentStore.json +++ /dev/null @@ -1,282 +0,0 @@ -[{ - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "lockedBalances", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "darknodeWhitelistLength", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "isWhitelisted", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "darknodeBlacklist", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "totalBalance", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }, { - "name": "", - "type": "address" - }], - "name": "darknodeBalances", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "address" - }], - "name": "darknodeWhitelist", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "whitelist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_token", - "type": "address" - }], - "name": "availableBalance", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, { - "name": "_token", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }], - "name": "incrementDarknodeBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }, { - "name": "_token", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_recipient", - "type": "address" - }], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknode", - "type": "address" - }], - "name": "isBlacklisted", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "inputs": [{ - "name": "_VERSION", - "type": "string" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/testnet/DarknodeRegistry.json b/src/lib/ethereum/contracts/ABIs/testnet/DarknodeRegistry.json deleted file mode 100644 index 06bebbb2..00000000 --- a/src/lib/ethereum/contracts/ABIs/testnet/DarknodeRegistry.json +++ /dev/null @@ -1,657 +0,0 @@ -[{ - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isPendingRegistration", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "numDarknodesNextEpoch", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }, { - "name": "_publicKey", - "type": "bytes" - }, { - "name": "_bond", - "type": "uint256" - }], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_nextMinimumBond", - "type": "uint256" - }], - "name": "updateMinimumBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "numDarknodes", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "getDarknodeOwner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextSlasher", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isPendingDeregistration", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_start", - "type": "address" - }, { - "name": "_count", - "type": "uint256" - }], - "name": "getPreviousDarknodes", - "outputs": [{ - "name": "", - "type": "address[]" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextMinimumEpochInterval", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "minimumEpochInterval", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_prover", - "type": "address" - }, { - "name": "_challenger1", - "type": "address" - }, { - "name": "_challenger2", - "type": "address" - }], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRefundable", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "previousEpoch", - "outputs": [{ - "name": "epochhash", - "type": "uint256" - }, { - "name": "blocknumber", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextMinimumBond", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_nextMinimumEpochInterval", - "type": "uint256" - }], - "name": "updateMinimumEpochInterval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "nextMinimumPodSize", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "numDarknodesPreviousEpoch", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [{ - "name": "epochhash", - "type": "uint256" - }, { - "name": "blocknumber", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRegisteredInPreviousEpoch", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isDeregistered", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_nextMinimumPodSize", - "type": "uint256" - }], - "name": "updateMinimumPodSize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "deregister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "getDarknodePublicKey", - "outputs": [{ - "name": "", - "type": "bytes" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [], - "name": "epoch", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "minimumBond", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "slasher", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_slasher", - "type": "address" - }], - "name": "updateSlasher", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "getDarknodeBond", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_newOwner", - "type": "address" - }], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRegistered", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "minimumPodSize", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isDeregisterable", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_start", - "type": "address" - }, { - "name": "_count", - "type": "uint256" - }], - "name": "getDarknodes", - "outputs": [{ - "name": "", - "type": "address[]" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_newOwner", - "type": "address" - }], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "refund", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_darknodeID", - "type": "address" - }], - "name": "isRefunded", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "inputs": [{ - "name": "_VERSION", - "type": "string" - }, { - "name": "_renAddress", - "type": "address" - }, { - "name": "_storeAddress", - "type": "address" - }, { - "name": "_minimumBond", - "type": "uint256" - }, { - "name": "_minimumPodSize", - "type": "uint256" - }, { - "name": "_minimumEpochInterval", - "type": "uint256" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_darknodeID", - "type": "address" - }, { - "indexed": false, - "name": "_bond", - "type": "uint256" - }], - "name": "LogDarknodeRegistered", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_darknodeID", - "type": "address" - }], - "name": "LogDarknodeDeregistered", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_owner", - "type": "address" - }, { - "indexed": false, - "name": "_amount", - "type": "uint256" - }], - "name": "LogDarknodeOwnerRefunded", - "type": "event" -}, { - "anonymous": false, - "inputs": [], - "name": "LogNewEpoch", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousMinimumBond", - "type": "uint256" - }, { - "indexed": false, - "name": "nextMinimumBond", - "type": "uint256" - }], - "name": "LogMinimumBondUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousMinimumPodSize", - "type": "uint256" - }, { - "indexed": false, - "name": "nextMinimumPodSize", - "type": "uint256" - }], - "name": "LogMinimumPodSizeUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousMinimumEpochInterval", - "type": "uint256" - }, { - "indexed": false, - "name": "nextMinimumEpochInterval", - "type": "uint256" - }], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "previousSlasher", - "type": "address" - }, { - "indexed": false, - "name": "nextSlasher", - "type": "address" - }], - "name": "LogSlasherUpdated", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }], - "name": "OwnershipRenounced", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "previousOwner", - "type": "address" - }, { - "indexed": true, - "name": "newOwner", - "type": "address" - }], - "name": "OwnershipTransferred", - "type": "event" -}] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/testnet/DarknodeRewardVault.json b/src/lib/ethereum/contracts/ABIs/testnet/DarknodeRewardVault.json deleted file mode 100644 index 607eed2f..00000000 --- a/src/lib/ethereum/contracts/ABIs/testnet/DarknodeRewardVault.json +++ /dev/null @@ -1,219 +0,0 @@ -[ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_darknode", - "type": "address" - }, - { - "name": "_token", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newDarknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_darknode", - "type": "address" - }, - { - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "_VERSION", - "type": "string" - }, - { - "name": "_darknodeRegistry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": false, - "name": "nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "previousOwner", - "type": "address" - } - ], - "name": "OwnershipRenounced", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } -] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/ABIs/testnet/WarpGateToken.json b/src/lib/ethereum/contracts/ABIs/testnet/WarpGateToken.json deleted file mode 100644 index 6241e1ed..00000000 --- a/src/lib/ethereum/contracts/ABIs/testnet/WarpGateToken.json +++ /dev/null @@ -1,355 +0,0 @@ -[{ - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "spender", - "type": "address" - }, { - "name": "value", - "type": "uint256" - }], - "name": "approve", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_hash", - "type": "bytes32" - }, { - "name": "_r", - "type": "bytes32" - }, { - "name": "_s", - "type": "bytes32" - }, { - "name": "_v", - "type": "uint8" - }], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "from", - "type": "address" - }, { - "name": "to", - "type": "address" - }, { - "name": "value", - "type": "uint256" - }], - "name": "transferFrom", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ - "name": "", - "type": "uint8" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "_to", - "type": "bytes" - }, { - "name": "_amount", - "type": "uint256" - }], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "spender", - "type": "address" - }, { - "name": "addedValue", - "type": "uint256" - }], - "name": "increaseAllowance", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "owner", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [{ - "name": "", - "type": "address" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "spender", - "type": "address" - }, { - "name": "subtractedValue", - "type": "uint256" - }], - "name": "decreaseAllowance", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": false, - "inputs": [{ - "name": "to", - "type": "address" - }, { - "name": "value", - "type": "uint256" - }], - "name": "transfer", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "", - "type": "bytes32" - }], - "name": "spent", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_hash", - "type": "bytes32" - }], - "name": "commitment", - "outputs": [{ - "name": "", - "type": "bytes32" - }], - "payable": false, - "stateMutability": "pure", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "_to", - "type": "address" - }, { - "name": "_amount", - "type": "uint256" - }, { - "name": "_hash", - "type": "bytes32" - }, { - "name": "_r", - "type": "bytes32" - }, { - "name": "_s", - "type": "bytes32" - }, { - "name": "_v", - "type": "uint8" - }], - "name": "verifySig", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "constant": true, - "inputs": [{ - "name": "owner", - "type": "address" - }, { - "name": "spender", - "type": "address" - }], - "name": "allowance", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" -}, { - "inputs": [{ - "name": "_owner", - "type": "address" - }, { - "name": "_name", - "type": "string" - }, { - "name": "_symbol", - "type": "string" - }, { - "name": "_decimals", - "type": "uint8" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_to", - "type": "address" - }, { - "indexed": false, - "name": "_amount", - "type": "uint256" - }], - "name": "LogMint", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": false, - "name": "_to", - "type": "bytes" - }, { - "indexed": false, - "name": "_amount", - "type": "uint256" - }], - "name": "LogBurn", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "from", - "type": "address" - }, { - "indexed": true, - "name": "to", - "type": "address" - }, { - "indexed": false, - "name": "value", - "type": "uint256" - }], - "name": "Transfer", - "type": "event" -}, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "owner", - "type": "address" - }, { - "indexed": true, - "name": "spender", - "type": "address" - }, { - "indexed": false, - "name": "value", - "type": "uint256" - }], - "name": "Approval", - "type": "event" -}] \ No newline at end of file diff --git a/src/lib/ethereum/contracts/bindings/DarknodePayment.d.ts b/src/lib/ethereum/contracts/bindings/DarknodePayment.d.ts new file mode 100644 index 00000000..6ffbc9c5 --- /dev/null +++ b/src/lib/ethereum/contracts/bindings/DarknodePayment.d.ts @@ -0,0 +1,162 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import BN from "bn.js"; +import Contract, { contractOptions } from "web3/eth/contract"; +import { EventLog, Callback, EventEmitter } from "web3/types"; +import { TransactionObject, BlockType } from "web3/eth/types"; +import { ContractEvent } from "./types"; + +interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export class DarknodePayment extends Contract { + constructor( + jsonInterface: any[], + address?: string, + options?: contractOptions + ); + clone(): DarknodePayment; + address: string; + methods: { + ETHEREUM(): TransactionObject; + + VERSION(): TransactionObject; + + claimOwnership(): TransactionObject; + + currentCycle(): TransactionObject; + + currentCyclePayoutPercent(): TransactionObject; + + cycleChanger(): TransactionObject; + + cycleStartTime(): TransactionObject; + + darknodeRegistry(): TransactionObject; + + isOwner(): TransactionObject; + + nextCyclePayoutPercent(): TransactionObject; + + owner(): TransactionObject; + + pendingTokens(arg0: number | string): TransactionObject; + + previousCycle(): TransactionObject; + + previousCycleRewardShare(arg0: string): TransactionObject; + + registeredTokenIndex(arg0: string): TransactionObject; + + registeredTokens(arg0: number | string): TransactionObject; + + renounceOwnership(): TransactionObject; + + rewardClaimed( + arg0: string, + arg1: number | string + ): TransactionObject; + + store(): TransactionObject; + + transferOwnership(newOwner: string): TransactionObject; + + unclaimedRewards(arg0: string): TransactionObject; + + updateDarknodeRegistry(_darknodeRegistry: string): TransactionObject; + + withdraw(_darknode: string, _token: string): TransactionObject; + + withdrawMultiple( + _darknode: string, + _tokens: (string)[] + ): TransactionObject; + + currentCycleRewardPool(_token: string): TransactionObject; + + darknodeBalances( + _darknodeID: string, + _token: string + ): TransactionObject; + + changeCycle(): TransactionObject; + + deposit(_value: number | string, _token: string): TransactionObject; + + forward(_token: string): TransactionObject; + + claim(_darknode: string): TransactionObject; + + registerToken(_token: string): TransactionObject; + + tokenPendingRegistration(_token: string): TransactionObject; + + deregisterToken(_token: string): TransactionObject; + + updateCycleChanger(_addr: string): TransactionObject; + + updatePayoutPercentage(_percent: number | string): TransactionObject; + + transferStoreOwnership(_newOwner: string): TransactionObject; + + claimStoreOwnership(): TransactionObject; + }; + events: { + LogCycleChangerChanged: ContractEvent<{ + _newCycleChanger: string; + _oldCycleChanger: string; + 0: string; + 1: string; + }>; + LogDarknodeClaim: ContractEvent<{ + _darknode: string; + _cycle: BN; + 0: string; + 1: BN; + }>; + LogDarknodeRegistryUpdated: ContractEvent<{ + _previousDarknodeRegistry: string; + _nextDarknodeRegistry: string; + 0: string; + 1: string; + }>; + LogDarknodeWithdrew: ContractEvent<{ + _payee: string; + _value: BN; + _token: string; + 0: string; + 1: BN; + 2: string; + }>; + LogPaymentReceived: ContractEvent<{ + _payer: string; + _amount: BN; + _token: string; + 0: string; + 1: BN; + 2: string; + }>; + LogPayoutPercentChanged: ContractEvent<{ + _newPercent: BN; + _oldPercent: BN; + 0: BN; + 1: BN; + }>; + LogTokenDeregistered: ContractEvent; + LogTokenRegistered: ContractEvent; + OwnershipTransferred: ContractEvent<{ + previousOwner: string; + newOwner: string; + 0: string; + 1: string; + }>; + allEvents: ( + options?: EventOptions, + cb?: Callback + ) => EventEmitter; + }; +} diff --git a/src/lib/ethereum/contracts/bindings/DarknodePaymentStore.d.ts b/src/lib/ethereum/contracts/bindings/DarknodePaymentStore.d.ts new file mode 100644 index 00000000..5ada6aed --- /dev/null +++ b/src/lib/ethereum/contracts/bindings/DarknodePaymentStore.d.ts @@ -0,0 +1,72 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import BN from "bn.js"; +import Contract, { contractOptions } from "web3/eth/contract"; +import { EventLog, Callback, EventEmitter } from "web3/types"; +import { TransactionObject, BlockType } from "web3/eth/types"; +import { ContractEvent } from "./types"; + +interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export class DarknodePaymentStore extends Contract { + constructor( + jsonInterface: any[], + address?: string, + options?: contractOptions + ); + clone(): DarknodePaymentStore; + address: string; + methods: { + ETHEREUM(): TransactionObject; + + VERSION(): TransactionObject; + + claimOwnership(): TransactionObject; + + darknodeBalances(arg0: string, arg1: string): TransactionObject; + + isOwner(): TransactionObject; + + lockedBalances(arg0: string): TransactionObject; + + owner(): TransactionObject; + + renounceOwnership(): TransactionObject; + + transferOwnership(newOwner: string): TransactionObject; + + totalBalance(_token: string): TransactionObject; + + availableBalance(_token: string): TransactionObject; + + incrementDarknodeBalance( + _darknode: string, + _token: string, + _amount: number | string + ): TransactionObject; + + transfer( + _darknode: string, + _token: string, + _amount: number | string, + _recipient: string + ): TransactionObject; + }; + events: { + OwnershipTransferred: ContractEvent<{ + previousOwner: string; + newOwner: string; + 0: string; + 1: string; + }>; + allEvents: ( + options?: EventOptions, + cb?: Callback + ) => EventEmitter; + }; +} diff --git a/src/lib/ethereum/contracts/bindings/DarknodeRegistry.d.ts b/src/lib/ethereum/contracts/bindings/DarknodeRegistry.d.ts new file mode 100644 index 00000000..6b41dec0 --- /dev/null +++ b/src/lib/ethereum/contracts/bindings/DarknodeRegistry.d.ts @@ -0,0 +1,225 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import BN from "bn.js"; +import Contract, { contractOptions } from "web3/eth/contract"; +import { EventLog, Callback, EventEmitter } from "web3/types"; +import { TransactionObject, BlockType } from "web3/eth/types"; +import { ContractEvent } from "./types"; + +interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export class DarknodeRegistry extends Contract { + constructor( + jsonInterface: any[], + address?: string, + options?: contractOptions + ); + clone(): DarknodeRegistry; + address: string; + methods: { + VERSION(): TransactionObject; + + claimOwnership(): TransactionObject; + + currentEpoch(): TransactionObject<{ + epochhash: BN; + blocktime: BN; + 0: BN; + 1: BN; + }>; + + darknodePayment(): TransactionObject; + + isOwner(): TransactionObject; + + minimumBond(): TransactionObject; + + minimumEpochInterval(): TransactionObject; + + minimumPodSize(): TransactionObject; + + nextMinimumBond(): TransactionObject; + + nextMinimumEpochInterval(): TransactionObject; + + nextMinimumPodSize(): TransactionObject; + + nextSlasher(): TransactionObject; + + numDarknodes(): TransactionObject; + + numDarknodesNextEpoch(): TransactionObject; + + numDarknodesPreviousEpoch(): TransactionObject; + + owner(): TransactionObject; + + previousEpoch(): TransactionObject<{ + epochhash: BN; + blocktime: BN; + 0: BN; + 1: BN; + }>; + + ren(): TransactionObject; + + renounceOwnership(): TransactionObject; + + slasher(): TransactionObject; + + store(): TransactionObject; + + transferOwnership(newOwner: string): TransactionObject; + + recoverTokens(_token: string): TransactionObject; + + register( + _darknodeID: string, + _publicKey: string | number[] + ): TransactionObject; + + deregister(_darknodeID: string): TransactionObject; + + epoch(): TransactionObject; + + transferStoreOwnership(_newOwner: string): TransactionObject; + + claimStoreOwnership(): TransactionObject; + + updateDarknodePayment(_darknodePayment: string): TransactionObject; + + updateMinimumBond( + _nextMinimumBond: number | string + ): TransactionObject; + + updateMinimumPodSize( + _nextMinimumPodSize: number | string + ): TransactionObject; + + updateMinimumEpochInterval( + _nextMinimumEpochInterval: number | string + ): TransactionObject; + + updateSlasher(_slasher: string): TransactionObject; + + slash( + _guilty: string, + _challenger: string, + _percentage: number | string + ): TransactionObject; + + refund(_darknodeID: string): TransactionObject; + + getDarknodeOwner(_darknodeID: string): TransactionObject; + + getDarknodeBond(_darknodeID: string): TransactionObject; + + getDarknodePublicKey(_darknodeID: string): TransactionObject; + + getDarknodes( + _start: string, + _count: number | string + ): TransactionObject<(string)[]>; + + getPreviousDarknodes( + _start: string, + _count: number | string + ): TransactionObject<(string)[]>; + + isPendingRegistration(_darknodeID: string): TransactionObject; + + isPendingDeregistration(_darknodeID: string): TransactionObject; + + isDeregistered(_darknodeID: string): TransactionObject; + + isDeregisterable(_darknodeID: string): TransactionObject; + + isRefunded(_darknodeID: string): TransactionObject; + + isRefundable(_darknodeID: string): TransactionObject; + + isRegistered(_darknodeID: string): TransactionObject; + + isRegisteredInPreviousEpoch( + _darknodeID: string + ): TransactionObject; + }; + events: { + LogDarknodeDeregistered: ContractEvent<{ + _operator: string; + _darknodeID: string; + 0: string; + 1: string; + }>; + LogDarknodeOwnerRefunded: ContractEvent<{ + _operator: string; + _amount: BN; + 0: string; + 1: BN; + }>; + LogDarknodePaymentUpdated: ContractEvent<{ + _previousDarknodePayment: string; + _nextDarknodePayment: string; + 0: string; + 1: string; + }>; + LogDarknodeRegistered: ContractEvent<{ + _operator: string; + _darknodeID: string; + _bond: BN; + 0: string; + 1: string; + 2: BN; + }>; + LogDarknodeSlashed: ContractEvent<{ + _operator: string; + _darknodeID: string; + _challenger: string; + _percentage: BN; + 0: string; + 1: string; + 2: string; + 3: BN; + }>; + LogMinimumBondUpdated: ContractEvent<{ + _previousMinimumBond: BN; + _nextMinimumBond: BN; + 0: BN; + 1: BN; + }>; + LogMinimumEpochIntervalUpdated: ContractEvent<{ + _previousMinimumEpochInterval: BN; + _nextMinimumEpochInterval: BN; + 0: BN; + 1: BN; + }>; + LogMinimumPodSizeUpdated: ContractEvent<{ + _previousMinimumPodSize: BN; + _nextMinimumPodSize: BN; + 0: BN; + 1: BN; + }>; + LogNewEpoch: ContractEvent; + LogSlasherUpdated: ContractEvent<{ + _previousSlasher: string; + _nextSlasher: string; + 0: string; + 1: string; + }>; + OwnershipTransferred: ContractEvent<{ + previousOwner: string; + newOwner: string; + 0: string; + 1: string; + }>; + allEvents: ( + options?: EventOptions, + cb?: Callback + ) => EventEmitter; + }; +} diff --git a/src/lib/ethereum/contracts/bindings/darknodePayment.ts b/src/lib/ethereum/contracts/bindings/darknodePayment.ts deleted file mode 100644 index 491ed373..00000000 --- a/src/lib/ethereum/contracts/bindings/darknodePayment.ts +++ /dev/null @@ -1,65 +0,0 @@ -/////////// WEB3 /////////////////////////////////////////////////////////////// - -// tslint:disable - -import BN from "bn.js"; -import { Log, PromiEvent, TransactionReceipt } from "web3-core"; -import { Contract } from "web3-eth-contract"; - -export interface Transaction { receipt: TransactionReceipt; tx: string; logs: Log[]; } - -export interface SendOptions { - from?: string; - gasPrice?: string; - gas?: number; - value?: number | string | BN; -} - -type BigNumber = string | number | BN; - - -export interface Read { - call: (options?: SendOptions) => Promise; -} -export interface Write { - send: (options?: SendOptions) => PromiEvent; -} -export interface DarknodePaymentWeb3 extends Contract { - methods: { - previousCycleRewardShare(index_0: string): Read; - cycleStartTime(): Read; - pendingTokens(index_0: BigNumber): Read; - cycleDuration(): Read; - renounceOwnership(): Write; - shareCount(): Read; - rewardClaimed(index_0: string, index_1: BigNumber): Read; - owner(): Read; - isOwner(): Read; - unclaimedRewards(index_0: string): Read; - store(): Read; - registeredTokens(index_0: BigNumber): Read; - darknodeRegistry(): Read; - currentCycle(): Read; - blacklister(): Read; - registeredTokenIndex(index_0: string): Read; - cycleTimeout(): Read; - previousCycle(): Read; - transferOwnership(newOwner: string): Write; - ETHEREUM(): Read; - VERSION(): Read; - withdraw(_darknode: string, _token: string): Write; - withdrawMultiple(_darknode: string, _tokens: string[]): Write; - currentCycleRewardPool(_token: string): Read; - darknodeBalances(_darknodeID: string, _token: string): Read; - changeCycle(): Write; - deposit(_value: BigNumber, _token: string): Write; - claim(_darknode: string): Write; - blacklist(_darknode: string): Write; - registerToken(_token: string): Write; - deregisterToken(_token: string): Write; - updateBlacklister(_addr: string): Write; - updateCycleDuration(_durationSeconds: BigNumber): Write; - transferStoreOwnership(_newOwner: string): Write; - claimStoreOwnership(): Write; - } -} diff --git a/src/lib/ethereum/contracts/bindings/darknodePaymentStore.ts b/src/lib/ethereum/contracts/bindings/darknodePaymentStore.ts deleted file mode 100644 index 63eb8406..00000000 --- a/src/lib/ethereum/contracts/bindings/darknodePaymentStore.ts +++ /dev/null @@ -1,50 +0,0 @@ -/////////// WEB3 /////////////////////////////////////////////////////////////// - -// tslint:disable - -import BN from "bn.js"; -import { Log, PromiEvent, TransactionReceipt } from "web3-core"; -import { Contract } from "web3-eth-contract"; - -export interface Transaction { receipt: TransactionReceipt; tx: string; logs: Log[]; } - -export interface SendOptions { - from?: string; - gasPrice?: string; - gas?: number; - value?: number | string | BN; -} - -type BigNumber = string | number | BN; - - -export interface Read { - call: (options?: SendOptions) => Promise; -} -export interface Write { - send: (options?: SendOptions) => PromiEvent; -} -export interface DarknodePaymentStoreWeb3 extends Contract { - methods: { - lockedBalances(index_0: string): Read; - darknodeWhitelistLength(): Read; - darknodeBlacklist(index_0: string): Read; - claimOwnership(): Write; - darknodeBalances(index_0: string, index_1: string): Read; - renounceOwnership(): Write; - owner(): Read; - isOwner(): Read; - darknodeWhitelist(index_0: string): Read; - transferOwnership(newOwner: string): Write; - ETHEREUM(): Read; - VERSION(): Read; - isBlacklisted(_darknode: string): Read; - isWhitelisted(_darknode: string): Read; - totalBalance(_token: string): Read; - availableBalance(_token: string): Read; - blacklist(_darknode: string): Write; - whitelist(_darknode: string): Write; - incrementDarknodeBalance(_darknode: string, _token: string, _amount: BigNumber): Write; - transfer(_darknode: string, _token: string, _amount: BigNumber, _recipient: string): Write; - } -} \ No newline at end of file diff --git a/src/lib/ethereum/contracts/bindings/darknodeRegistry.ts b/src/lib/ethereum/contracts/bindings/darknodeRegistry.ts deleted file mode 100644 index 299f155d..00000000 --- a/src/lib/ethereum/contracts/bindings/darknodeRegistry.ts +++ /dev/null @@ -1,65 +0,0 @@ -// tslint:disable - -import BN from "bn.js"; -import { Log, PromiEvent, TransactionReceipt } from "web3-core"; -import { Contract, SendOptions } from "web3-eth-contract"; - -export interface Transaction { receipt: TransactionReceipt; tx: string; logs: Log[]; } - -type BigNumber = string | number | BN; - - -export interface Read { - call: (options?: SendOptions) => Promise; -} -export interface Write { - send: (options?: SendOptions) => PromiEvent; -} -export interface DarknodeRegistryWeb3 extends Contract { - methods: { - numDarknodesNextEpoch(): Read; - numDarknodes(): Read; - nextSlasher(): Read; - nextMinimumEpochInterval(): Read; - minimumEpochInterval(): Read; - previousEpoch(): Read<{ epochhash: BigNumber, blocknumber: BigNumber, 0: BigNumber, 1: BigNumber }>; - nextMinimumBond(): Read; - nextMinimumPodSize(): Read; - renounceOwnership(): Write; - numDarknodesPreviousEpoch(): Read; - currentEpoch(): Read<{ epochhash: BigNumber, blocknumber: BigNumber, 0: BigNumber, 1: BigNumber }>; - ren(): Read; - owner(): Read; - isOwner(): Read; - store(): Read; - minimumBond(): Read; - slasher(): Read; - minimumPodSize(): Read; - transferOwnership(newOwner: string): Write; - VERSION(): Read; - register(_darknodeID: string, _publicKey: string, _bond: BigNumber): Write; - deregister(_darknodeID: string): Write; - epoch(): Write; - transferStoreOwnership(_newOwner: string): Write; - claimStoreOwnership(): Write; - updateMinimumBond(_nextMinimumBond: BigNumber): Write; - updateMinimumPodSize(_nextMinimumPodSize: BigNumber): Write; - updateMinimumEpochInterval(_nextMinimumEpochInterval: BigNumber): Write; - updateSlasher(_slasher: string): Write; - slash(_prover: string, _challenger1: string, _challenger2: string): Write; - refund(_darknodeID: string): Write; - getDarknodeOwner(_darknodeID: string): Read; - getDarknodeBond(_darknodeID: string): Read; - getDarknodePublicKey(_darknodeID: string): Read; - getDarknodes(_start: string, _count: BigNumber): Read; - getPreviousDarknodes(_start: string, _count: BigNumber): Read; - isPendingRegistration(_darknodeID: string): Read; - isPendingDeregistration(_darknodeID: string): Read; - isDeregistered(_darknodeID: string): Read; - isDeregisterable(_darknodeID: string): Read; - isRefunded(_darknodeID: string): Read; - isRefundable(_darknodeID: string): Read; - isRegistered(_darknodeID: string): Read; - isRegisteredInPreviousEpoch(_darknodeID: string): Read; - } -} diff --git a/src/lib/ethereum/contracts/contracts.ts b/src/lib/ethereum/contracts/contracts.ts deleted file mode 100644 index 65227722..00000000 --- a/src/lib/ethereum/contracts/contracts.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { AbiItem } from "web3-utils"; - -import { EthNetwork } from "../../../store/types"; -import { OldToken, Token } from "../tokens"; - -// Contracts -interface Contract { - ABI: AbiItem[]; - address: string; - deployedInBlock?: string; // hex string -} - -const requireABIsForNetwork = (ethNetwork: EthNetwork) => { - const ERC20: Contract = { - // tslint:disable-next-line: no-require-imports - ABI: require("./ABIs/ERC20.json"), - address: "" - }; - - let path; - let darknodeRegistry; - let darknodeRewardVault; - let dnrDeployedInBlock; - let darknodePayment; - let darknodePaymentStore; - switch (ethNetwork) { - case EthNetwork.Mainnet: - path = "mainnet"; - - // Change these together - darknodeRegistry = "0x34bd421C7948Bc16f826Fd99f9B785929b121633"; - dnrDeployedInBlock = "0x6AED46"; // in hex - - darknodeRewardVault = "0xa96450d3386ece22db20b0ac96ef5684b6d95d53"; - darknodePaymentStore = "0x731Ea4Ba77fF184d89dBeB160A0078274Acbe9D2"; - darknodePayment = "0x5a7802E66b067cB1770ee5b1165AA201690A8B6a"; - - break; - case EthNetwork.Kovan: - path = "testnet"; - - // Change these together - darknodeRegistry = "0x1C6309618338D0EDf9a7Ea8eA18E060fD323020D"; - dnrDeployedInBlock = "0xA35A7A"; // in hex - - darknodeRewardVault = "0xc08Dfa565EdB7216c3b23bBf0848B43fE9a49F0E"; - darknodePaymentStore = "0xA9411C3AD1fBE168fd119A3B32fB481a0b9877A9"; - darknodePayment = "0x8E11B87547f4072CC8A094F2888201CAF4EA0B9e"; - break; - default: - throw new Error(`Unsupported network ${ethNetwork}`); - } - - const DarknodeRegistry: Contract = { - // tslint:disable-next-line: non-literal-require - ABI: require(`./ABIs/${path}/DarknodeRegistry.json`), - address: darknodeRegistry, - deployedInBlock: dnrDeployedInBlock, - }; - - const DarknodeRewardVault: Contract = { - // tslint:disable-next-line: non-literal-require - ABI: require(`./ABIs/${path}/DarknodeRewardVault.json`), - address: darknodeRewardVault, - }; - - const DarknodePayment: Contract = { - // tslint:disable-next-line: non-literal-require - ABI: require(`./ABIs/${path}/DarknodePayment.json`), - address: darknodePayment, - }; - - const DarknodePaymentStore: Contract = { - // tslint:disable-next-line: non-literal-require - ABI: require(`./ABIs/${path}/DarknodePaymentStore.json`), - address: darknodePaymentStore, - }; - - const WarpGateToken: Contract = { - // tslint:disable-next-line: non-literal-require - ABI: require(`./ABIs/${path}/WarpGateToken.json`), - address: "", - }; - - return { ERC20, DarknodeRegistry, DarknodePayment, DarknodeRewardVault, WarpGateToken, DarknodePaymentStore }; -}; - -const kovanContracts = requireABIsForNetwork(EthNetwork.Kovan); -const mainnetContracts = requireABIsForNetwork(EthNetwork.Mainnet); - -export const getContracts = (ethNetwork: EthNetwork) => { - // eslint-disable-next-line - switch (ethNetwork) { - case EthNetwork.Kovan: - return kovanContracts; - case EthNetwork.Mainnet: - return mainnetContracts; - } -}; - -export const tokenAddresses = (token: Token | OldToken, ethNetwork: EthNetwork): string => { - // eslint-disable-next-line - switch (ethNetwork) { - case EthNetwork.Mainnet: - // eslint-disable-next-line - switch (token) { - case Token.DAI: - return "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359"; - case Token.ETH: - return "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; - case Token.BTC: - throw new Error("No address"); - case Token.ZEC: - throw new Error("No address"); - case OldToken.ETH: - return "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; - case OldToken.DGX: - return "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF"; - case OldToken.REN: - return "0x408e41876cCCDC0F92210600ef50372656052a38"; - case OldToken.TUSD: - return "0x8dd5fbCe2F6a956C3022bA3663759011Dd51e73E"; - case OldToken.OMG: - return "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07"; - case OldToken.ZRX: - return "0xE41d2489571d322189246DaFA5ebDe1F4699F498"; - } - break; - case EthNetwork.Kovan: - // eslint-disable-next-line - switch (token) { - case Token.DAI: - return "0xc4375b7de8af5a38a93548eb8453a498222c4ff2"; - case Token.ETH: - return "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; - case Token.BTC: - return "0x2a8368d2a983a0aeae8da0ebc5b7c03a0ea66b37"; - case Token.ZEC: - return "0xd67256552f93b39ac30083b4b679718a061feae6"; - case OldToken.ETH: - return "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; - case OldToken.DGX: - return "0x7d6D31326b12B6CBd7f054231D47CbcD16082b71"; - case OldToken.REN: - return "0x2cd647668494c1b15743ab283a0f980d90a87394"; - case OldToken.TUSD: - return "0x525389752ffe6487d33EF53FBcD4E5D3AD7937a0"; - case OldToken.OMG: - return "0x66497ba75dD127b46316d806c077B06395918064"; - case OldToken.ZRX: - return "0x6EB628dCeFA95802899aD3A9EE0C7650Ac63d543"; - } - break; - } - throw new Error(`Unknown network ${ethNetwork} or token ${token}`); -}; diff --git a/src/lib/ethereum/ethereum.d.ts b/src/lib/ethereum/ethereum.d.ts deleted file mode 100644 index c0bda830..00000000 --- a/src/lib/ethereum/ethereum.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare module "web3-provider-engine"; -declare module "web3-provider-engine/subproviders/fetch"; diff --git a/src/lib/ethereum/getWeb3.ts b/src/lib/ethereum/getWeb3.ts new file mode 100644 index 00000000..3e107ec5 --- /dev/null +++ b/src/lib/ethereum/getWeb3.ts @@ -0,0 +1,42 @@ +import Web3 from "web3"; +import { provider } from "web3-providers"; + +import { Language } from "../../languages/language"; +import { _noCapture_ } from "../react/errors"; + +export const ErrorCanceledByUser = "User denied transaction signature."; + +const ErrorNoWeb3 = Language.wallet.mustInstallMetaMask; +// const ErrorNoAccounts = Language.wallet.noAccounts; +const ErrorAccountAccessRejected = Language.wallet.mustConnect; + +export const getReadOnlyWeb3 = (publicNode: string): Web3 => { + return new Web3(publicNode); +}; + +export const getInjectedWeb3Provider = async (onAnyProvider?: (provider: provider) => void): Promise => { + let injectedProvider; + + if (window.ethereum) { + try { + await window.ethereum.enable(); + injectedProvider = window.ethereum; + } catch (error) { + throw _noCapture_(new Error(ErrorAccountAccessRejected)); + } + } else if (window.web3) { + injectedProvider = window.web3.currentProvider; + } else { + throw _noCapture_(new Error(ErrorNoWeb3)); + } + + if (onAnyProvider) { onAnyProvider(injectedProvider); } + + // const web3 = new Web3(injectedProvider); + + // if ((await web3.eth.getAccounts()).length === 0) { + // throw new Error(ErrorNoAccounts); + // } + + return injectedProvider; +}; diff --git a/src/lib/ethereum/network.ts b/src/lib/ethereum/network.ts deleted file mode 100644 index c4455bf1..00000000 --- a/src/lib/ethereum/network.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Not currently used - -import { BigNumber } from "bignumber.js"; -import Web3 from "web3"; - -import { EthNetwork } from "../../store/types"; -import { _noCapture_ } from "../errors"; -import { DarknodeRegistryWeb3 } from "./contracts/bindings/darknodeRegistry"; -import { getContracts } from "./contracts/contracts"; - -export const getDarknodeCount = async (web3: Web3, ethNetwork: EthNetwork): Promise => { - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - const darknodeCount = await darknodeRegistry.methods.numDarknodes().call(); - if (darknodeCount === null) { - throw _noCapture_(new Error("Unable to retrieve darknode count")); - } - return new BigNumber(darknodeCount.toString()); -}; diff --git a/src/lib/ethereum/operator.ts b/src/lib/ethereum/operator.ts deleted file mode 100644 index 8c54257a..00000000 --- a/src/lib/ethereum/operator.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { OrderedSet } from "immutable"; -import Web3 from "web3"; -import { sha3, toChecksumAddress } from "web3-utils"; - -import { EthNetwork } from "../../store/types"; -import { _noCapture_ } from "../errors"; -import { DarknodeRegistryWeb3 } from "./contracts/bindings/darknodeRegistry"; -import { getContracts } from "./contracts/contracts"; - -const NULL = "0x0000000000000000000000000000000000000000"; - -const getAllDarknodes = async (web3: Web3, ethNetwork: EthNetwork): Promise => { - const batchSize = 10; - - const allDarknodes = []; - let lastDarknode = NULL; - const filter = (address: string) => address !== NULL && address !== lastDarknode; - do { - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - const darknodes = (await darknodeRegistry.methods.getDarknodes(lastDarknode, batchSize.toString()).call()); - if (darknodes === null) { - throw _noCapture_(new Error("Error calling 'darknodeRegistry.methods.getDarknodes'")); - } - allDarknodes.push(...darknodes.filter(filter)); - [lastDarknode] = darknodes.slice(-1); - } while (lastDarknode !== NULL); - - return allDarknodes; -}; - -export const getOperatorDarknodes = async ( - web3: Web3, - ethNetwork: EthNetwork, - address: string, -): Promise> => { - // TODO: Should addresses be made lower case or checksum addresses first? - - // Currently, the LogDarknodeRegistered logs don't include the registrar, so - // instead we loop through every darknode and get it's owner first. - // NOTE: Retrieving all logs only returns recent logs. - - const darknodes = await getAllDarknodes(web3, ethNetwork); - - /* - Sample log: - { - address: "0x75Fa8349fc9C7C640A4e9F1A1496fBB95D2Dc3d5", - blockHash: "0xfab9c0e4d7ccca3e56d6961fbe17917923898828b3f929093e6b976b8727db39", - blockNumber: 9740948, - data: "0x000000000000000000000000945458e071eca54bb534d8ac7c8cd1a3eb318d9200000000000000000000000000000000000000\ - 000000152d02c7e14af6800000", - id: "log_98d2346b", - logIndex: 2, - removed: false, - topics: ["0xd2819ba4c736158371edf0be38fd8d1fc435609832e392f118c4c79160e5bd7b"], - transactionHash: "0x8ed0e53dffda6c356e25cb1ac3ebe7a69bcab8ebf668a7b2e770480bdb47598b", - transactionIndex: 2, - transactionLogIndex: "0x2", - type: "mined", - } - */ - - // Get Registration events - const recentRegistrationEvents = await web3.eth.getPastLogs({ - address: getContracts(ethNetwork).DarknodeRegistry.address, - // tslint:disable-next-line:no-any - fromBlock: getContracts(ethNetwork).DarknodeRegistry.deployedInBlock || "0x600000" as any, - toBlock: "latest", - // topics: [sha3("LogDarknodeRegistered(address,uint256)"), "0x000000000000000000000000" + - // address.slice(2), null, null] as any, - // tslint:disable-next-line:no-any - topics: [sha3("LogDarknodeRegistered(address,uint256)")] as any, - }); - for (const event of recentRegistrationEvents) { - // The log data returns back like this: - // 0x000000000000000000000000945458e071eca54bb534d8ac7c8cd1a3eb318d92000000000000000000000000000000000000000000\ - // 00152d02c7e14af6800000 - // and we want to extract this: 0x945458e071eca54bb534d8ac7c8cd1a3eb318d92 (20 bytes, 40 characters long) - const darknodeID = toChecksumAddress(`0x${event.data.substr(26, 40)}`); - darknodes.push(darknodeID); - } - - // Note: Deregistration events are not included because we are unable to retrieve the operator - - // // Get Deregistration events - // const recentDeregistrationEvents = await web3.eth.getPastLogs({ - // address: contracts.DarknodeRegistry.address, - // // tslint:disable-next-line:no-any - // fromBlock: "0x889E55" as any, // FIXME: Change this based on network or get from address deployment - // toBlock: "latest", - // // tslint:disable-next-line:no-any - // topics: [sha3("LogDarknodeDeregistered(address)"), null] as any, - // }); - - // for (const event of recentDeregistrationEvents) { - // const darknodeID = toChecksumAddress("0x" + event.data.substr(26, 40)); - // darknodes.push(darknodeID); - // } - - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - const operatorPromises = darknodes.map(async (darknodeID: string) => - darknodeRegistry.methods.getDarknodeOwner(darknodeID).call() - ); - - let operatorDarknodes = OrderedSet(); - - for (let i = 0; i < darknodes.length; i++) { - if (await operatorPromises[i] === address && !operatorDarknodes.contains(address)) { - operatorDarknodes = operatorDarknodes.add(darknodes[i]); - } - } - - return operatorDarknodes; -}; diff --git a/src/lib/ethereum/tokens.ts b/src/lib/ethereum/tokens.ts index 00272019..a853fb8b 100644 --- a/src/lib/ethereum/tokens.ts +++ b/src/lib/ethereum/tokens.ts @@ -1,23 +1,24 @@ +import { Currency } from "@renproject/react-components"; import Axios from "axios"; - -import { Map } from "immutable"; - -import { Currency, TokenPrices } from "../../store/types"; +import { isMainnetAddress, isTestnetAddress } from "bchaddrjs"; +import { Map, OrderedMap } from "immutable"; +import { validate } from "wallet-address-validator"; export enum Token { DAI = "DAI", ETH = "ETH", BTC = "BTC", ZEC = "ZEC", + BCH = "BCH", } export enum OldToken { - ETH = "ETH (old)", - DGX = "DGX (old)", - TUSD = "TUSD (old)", - REN = "REN (old)", - ZRX = "ZRX (old)", - OMG = "OMG (old)", + ETH = "Old_ETH", + DGX = "Old_DGX", + TUSD = "TOld_USD", + REN = "Old_REN", + ZRX = "Old_ZRX", + OMG = "Old_OMG", } interface TokenDetail { @@ -30,30 +31,22 @@ interface TokenDetail { old: boolean; blockchain: Token; // Used for address validation + validator: (address: string, isTestnet: boolean) => boolean; } +const btcValidator = (address: string, isTestnet: boolean) => validate(address, "btc", isTestnet ? "testnet" : "prod"); +const zecValidator = (address: string, isTestnet: boolean) => validate(address, "zec", isTestnet ? "testnet" : "prod"); +const bchValidator = (address: string, isTestnet: boolean) => { + try { + return isTestnet ? isTestnetAddress(address) : isMainnetAddress(address); + } catch (error) { + return false; + } +}; +const ethValidator = (address: string, isTestnet: boolean) => validate(address, "eth", isTestnet ? "testnet" : "prod"); + // TODO: Switch on network -export const AllTokenDetails = Map>() - .set(Token.DAI, - { - symbol: Token.DAI, - name: "Dai", - decimals: 18, - wrapped: false, - coinGeckoID: "dai", - old: false, - blockchain: Token.ETH - }) - .set(Token.ETH, - { - symbol: Token.ETH, - name: "Ethereum", - decimals: 18, - wrapped: false, - coinGeckoID: "ethereum", - old: false, - blockchain: Token.ETH - }) +export const AllTokenDetails = OrderedMap>() .set(Token.BTC, { symbol: Token.BTC, @@ -62,7 +55,9 @@ export const AllTokenDetails = Map details.old) as Map>; +export const OldTokenDetails = AllTokenDetails.filter((details) => details.old) as OrderedMap>; // tslint:disable-next-line: no-unnecessary-type-assertion -export const NewTokenDetails = AllTokenDetails.filter((details) => !details.old) as Map>; +export const NewTokenDetails = AllTokenDetails.filter((details) => !details.old) as OrderedMap>; const coinGeckoURL = `https://api.coingecko.com/api/v3`; const coinGeckoParams = `localization=false&tickers=false&market_data=true&community_data=false&developer_data=false&sparkline=false`; -export const getPrices = async (): Promise => { - - let prices: TokenPrices = Map(); - - for (const [token, tokenDetails] of AllTokenDetails.toArray()) { - const response = await Axios.get( - `${coinGeckoURL}/coins/${tokenDetails.coinGeckoID}?${coinGeckoParams}` - ); - const price = Map(response.data.market_data.current_price); +export const getPrices = (): Promise => + AllTokenDetails.toArray().map(([token, tokenDetails]) => + ({ + token, responsePromise: Axios.get( + `${coinGeckoURL}/coins/${tokenDetails.coinGeckoID}?${coinGeckoParams}` + ) + })) + .reduce(async (pricesPromise, { token, responsePromise }) => { + let prices = await pricesPromise; + try { + const price = Map((await responsePromise).data.market_data.current_price); + prices = prices.set(token, price); + } catch (error) { + console.error(error); + } + return prices; + }, Promise.resolve(OrderedMap>())); - prices = prices.set(token, price); - } - - return prices; -}; +export type TokenPrices = OrderedMap>; diff --git a/src/lib/ethereum/tokens.test.ts b/src/lib/ethereum/tokensspec.ts similarity index 97% rename from src/lib/ethereum/tokens.test.ts rename to src/lib/ethereum/tokensspec.ts index 5e528f24..ac7dafbe 100644 --- a/src/lib/ethereum/tokens.test.ts +++ b/src/lib/ethereum/tokensspec.ts @@ -1,4 +1,4 @@ -import { } from "./tokens"; +import {} from "./tokens"; // const testnetAddresses = [ // "mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn", diff --git a/src/lib/ethereum/waitForTX.ts b/src/lib/ethereum/waitForTX.ts new file mode 100644 index 00000000..d98a365a --- /dev/null +++ b/src/lib/ethereum/waitForTX.ts @@ -0,0 +1,28 @@ +import { PromiEvent } from "web3-core"; + +import { addTransaction, setTxConfirmations } from "../../store/network/operatorActions"; +import { AppDispatch } from "../../store/rootReducer"; + +export type WaitForTX = (promiEvent: PromiEvent, onConfirmation?: (confirmations?: number) => void) => Promise; +export const waitForTX = (promiEvent: PromiEvent, onConfirmation?: (confirmations?: number) => void) => async (dispatch: AppDispatch) => new Promise((resolve, reject) => { + promiEvent.on("transactionHash", (txHash) => { + resolve(txHash); + dispatch(addTransaction({ txHash, tx: promiEvent })); + promiEvent.on("confirmation", (confirmations) => { + dispatch(setTxConfirmations({ txHash, confirmations })); + if (onConfirmation) { onConfirmation(confirmations); } + }); + promiEvent.on("error", () => { + dispatch(setTxConfirmations({ txHash, confirmations: -1 })); + }); + }).catch(reject); +}); +export const connectWaitForTX = (dispatch: AppDispatch) => (promiEvent: PromiEvent, onConfirmation?: (confirmations?: number) => void) => dispatch(waitForTX(promiEvent, onConfirmation)); +export const simpleWaitForTX: WaitForTX = async (promiEvent: PromiEvent, onConfirmation?: (confirmations?: number) => void) => new Promise((resolve, reject) => { + promiEvent.on("transactionHash", (txHash) => { + resolve(txHash); + promiEvent.on("confirmation", (confirmations) => { + if (onConfirmation) { onConfirmation(confirmations); } + }); + }).catch(reject); +}); diff --git a/src/lib/ethereum/wallet.ts b/src/lib/ethereum/wallet.ts deleted file mode 100644 index 79bcb724..00000000 --- a/src/lib/ethereum/wallet.ts +++ /dev/null @@ -1,54 +0,0 @@ -import Web3 from "web3"; - -import { provider } from "web3-providers"; - -import { Language } from "../../languages/language"; -import { EthNetwork } from "../../store/types"; -import { PUBLIC_NODE } from "../environmentVariables"; -import { _noCapture_ } from "../errors"; - -export const ErrorCanceledByUser = "User denied transaction signature."; - -const ErrorNoWeb3 = Language.wallet.mustInstallMetaMask; -const ErrorNoAccounts = Language.wallet.noAccounts; -const ErrorAccountAccessRejected = Language.wallet.mustConnect; -const ErrorWrongNetwork = Language.wallet.mustChangeNetwork; - -export const getReadOnlyWeb3 = (): Web3 => { - return new Web3(PUBLIC_NODE || ""); -}; - -export const getInjectedWeb3Provider = async (onAnyProvider: (provider: provider) => void): Promise => { - let injectedProvider; - - if (window.ethereum) { - try { - await window.ethereum.enable(); - injectedProvider = window.ethereum; - } catch (error) { - throw _noCapture_(new Error(ErrorAccountAccessRejected)); - } - } else if (window.web3) { - injectedProvider = window.web3.currentProvider; - } else { - throw _noCapture_(new Error(ErrorNoWeb3)); - } - - onAnyProvider(injectedProvider); - - const web3 = new Web3(injectedProvider); - - // Check that the provider is using the correct network - // tslint:disable-next-line: no-any - const network = (await (web3.eth.net as any).getNetworkType()); - // tslint:disable-next-line:no-any - if (network !== EthNetwork.Kovan && network !== EthNetwork.Mainnet) { - throw _noCapture_(new Error(ErrorWrongNetwork)); - } - - if ((await web3.eth.getAccounts()).length === 0) { - throw new Error(ErrorNoAccounts); - } - - return injectedProvider; -}; diff --git a/src/lib/encodedData.ts b/src/lib/general/encodedData.ts similarity index 98% rename from src/lib/encodedData.ts rename to src/lib/general/encodedData.ts index 7662b04e..4b37fe5c 100644 --- a/src/lib/encodedData.ts +++ b/src/lib/general/encodedData.ts @@ -1,7 +1,6 @@ +import { Record } from "@renproject/react-components"; import base58 from "bs58"; -import { Record } from "./record"; - export enum Encodings { AUTO = "auto", UNKNOWN = "unknown", diff --git a/src/lib/general/promiseAll.ts b/src/lib/general/promiseAll.ts new file mode 100644 index 00000000..a31395c1 --- /dev/null +++ b/src/lib/general/promiseAll.ts @@ -0,0 +1,42 @@ +import { List, OrderedMap } from "immutable"; + +export const awaitOr = async(π: Promise, e: E): Promise => { + try { + return await π; + } catch (error) { + return e; + } +}; + +// FIXME: safePromiseAllList still throws uncaught errors + +// The same as Promise.all except that if an entry throws, it sets it to the +// provided default value instead of throwing the entire promise. +export const safePromiseAllList = async (orderedMap: List>, defaultValue: b): Promise> => { + let newOrderedMap = List(); + for (const valueP of orderedMap.toArray()) { + try { + newOrderedMap = newOrderedMap.push(await valueP); + } catch (error) { + console.error(error); + newOrderedMap = newOrderedMap.push(defaultValue); + } + } + return newOrderedMap; +}; + +// The same as Promise.all except that if an entry throws, it sets it to the +// provided default value instead of throwing the entire promise. +// This variation maps over an OrderedMap instead of an array. +export const safePromiseAllMap = async (orderedMap: OrderedMap>, defaultValue: b): Promise> => { + let newOrderedMap = OrderedMap(); + for (const [key, valueP] of orderedMap.toArray()) { + try { + newOrderedMap = newOrderedMap.set(key, await valueP); + } catch (error) { + console.error(error); + newOrderedMap = newOrderedMap.set(key, defaultValue); + } + } + return newOrderedMap; +}; diff --git a/src/lib/react/className.ts b/src/lib/react/className.ts new file mode 100644 index 00000000..ab313c38 --- /dev/null +++ b/src/lib/react/className.ts @@ -0,0 +1,3 @@ +export const className = (...args: string[]) => { + return args.join(" "); +}; diff --git a/src/lib/react/connectUnstated.tsx b/src/lib/react/connectUnstated.tsx new file mode 100644 index 00000000..f865514f --- /dev/null +++ b/src/lib/react/connectUnstated.tsx @@ -0,0 +1,9 @@ +import { ComponentClass, createElement, FunctionComponent } from "react"; +import { Container } from "unstated-next"; + +// Used temporarily while we migrated from redux/unstated to unstated-next. +export const connectContainer = ( + container: Container, + component: string | FunctionComponent | ComponentClass, +) => + (props: Props) => {createElement(component, props)}; diff --git a/src/lib/react/environmentVariables.ts b/src/lib/react/environmentVariables.ts new file mode 100644 index 00000000..a4c42484 --- /dev/null +++ b/src/lib/react/environmentVariables.ts @@ -0,0 +1,10 @@ +import { RenNetwork } from "@renproject/contracts"; + +// Automatically set +export const NODE_ENV = process.env.NODE_ENV; +export const SOURCE_VERSION = process.env.REACT_APP_SOURCE_VERSION || "local"; + +// Set in .env / settings page +export const INFURA_KEY = process.env.REACT_APP_INFURA_KEY || ""; +export const SENTRY_DSN = process.env.REACT_APP_SENTRY_DSN || ""; +export const DEFAULT_REN_NETWORK = (process.env.REACT_APP_NETWORK as RenNetwork) || RenNetwork.Testnet; diff --git a/src/lib/errors.ts b/src/lib/react/errors.ts similarity index 67% rename from src/lib/errors.ts rename to src/lib/react/errors.ts index 56b0b93f..6be3eff4 100644 --- a/src/lib/errors.ts +++ b/src/lib/react/errors.ts @@ -2,12 +2,13 @@ import * as Sentry from "@sentry/browser"; -import { Network } from "../store/types"; -import { naturalTime } from "./conversion"; -import { environment } from "./environmentVariables"; +import { RenNetwork } from "@renproject/contracts"; +import { naturalTime } from "@renproject/react-components"; + +import { DEFAULT_REN_NETWORK, NODE_ENV } from "./environmentVariables"; interface Details { - description?: string; + description: string; category?: string; level?: Sentry.Severity; ignoreNetwork?: boolean; @@ -18,7 +19,7 @@ interface Described { } interface ShownToUser { - shownToUser: string; + shownToUser?: string; } let pageLoaded: Date; @@ -48,7 +49,8 @@ const isNetworkError = (error: Error | any): boolean => { message.match(/Request failed or timed out/i) || message.match(/Returned values aren't valid, did it run Out of Gas\?/i) || message.match(/Invalid JSON RPC response/i) || - message.match(/timeout of 0ms exceeded/i) + message.match(/timeout of 0ms exceeded/i) || + message.match(/header not found/i) ) { return true; } @@ -86,8 +88,9 @@ const rawError = (errorObject: Error) => { return rawErrorJSON; }; -const _captureException_ = (error: any, details: X) => { +const _catchException_ = (error: any, details: X) => { if (error._noCapture_) { + // tslint:disable-next-line: no-console console.error(error); return; } @@ -123,13 +126,13 @@ const _captureException_ = (error: any, details: X) => { // tslint:disable-next-line: no-console console.error(error); - if (environment !== Network.Production) { + if (DEFAULT_REN_NETWORK !== RenNetwork.Mainnet) { if (typeof error === "string") { // tslint:disable-next-line: no-parameter-reassignment - error = `[${environment.toUpperCase()}] ${error}`; + error = `[${DEFAULT_REN_NETWORK}-${NODE_ENV}] ${error}`; } else { try { - error.message = `[${environment.toUpperCase()}] ${error.message || error}`; + error.message = `[${DEFAULT_REN_NETWORK}-${NODE_ENV}] ${error.message || error}`; } catch { // Ignore: Unable to overwrite message (may be read-only) } @@ -142,23 +145,22 @@ const _captureException_ = (error: any, details: X) => { } Sentry.captureException(error); - }); }; // Background exceptions are thrown in background loops and actions -export const _captureBackgroundException_ = (error: any, details?: X) => { - _captureException_(error, { ignoreNetwork: true, ...details, category: "background_exception" }); +export const _catchBackgroundException_ = (error: any, details: X | string) => { + _catchException_(error, { ignoreNetwork: true, ...(typeof details === "string" ? { description: details } : details), category: "background_exception" }); }; // Interaction exceptions are thrown as a direct result of a user interaction -export const _captureInteractionException_ = (error: any, details?: X) => { - _captureException_(error, { ...details, category: "interaction_exception" }); +export const _catchInteractionException_ = (error: any, details: X | string) => { + _catchException_(error, { ...(typeof details === "string" ? { description: details } : details), category: "interaction_exception" }); }; // Component exceptions are thrown from an ErrorBoundary -export const _captureComponentException_ = (error: any, errorInfo: React.ErrorInfo) => { - _captureException_(error, { ...errorInfo, description: "Error caught in Error Boundary. See Component stack trace.", category: "component_exception" }); +export const _catchComponentException_ = (error: any, errorInfo: React.ErrorInfo) => { + _catchException_(error, { ...errorInfo, description: "Error caught in Error Boundary. See Component stack trace.", category: "component_exception" }); }; // _noCapture_ is to mark errors that should not be reported to Sentry. @@ -166,3 +168,20 @@ export const _noCapture_ = (error: Error): Error => { (error as any)._noCapture_ = true; return error; }; + +// tslint:disable-next-line: no-any +export const extractError = (error: any): string => { + if (typeof error === "object") { + if (error.response) { return extractError(error.response); } + if (error.data) { return extractError(error.data); } + if (error.error) { return extractError(error.error); } + if (error.message) { return extractError(error.message); } + if (error.statusText) { return extractError(error.statusText); } + try { + return JSON.stringify(error); + } catch (error) { + // Ignore JSON error + } + } + return String(error); +}; diff --git a/src/lib/history.ts b/src/lib/react/history.ts similarity index 100% rename from src/lib/history.ts rename to src/lib/react/history.ts diff --git a/src/lib/onLoad.ts b/src/lib/react/onLoad.ts similarity index 67% rename from src/lib/onLoad.ts rename to src/lib/react/onLoad.ts index 003c6df5..0983fe4e 100644 --- a/src/lib/onLoad.ts +++ b/src/lib/react/onLoad.ts @@ -1,10 +1,10 @@ import * as Sentry from "@sentry/browser"; +import { ExtraErrorData } from "@sentry/integrations"; import Web3 from "web3"; - import { HttpProvider } from "web3-providers"; -import { environment, SENTRY_DSN, SOURCE_VERSION } from "./environmentVariables"; +import { DEFAULT_REN_NETWORK, NODE_ENV, SENTRY_DSN, SOURCE_VERSION } from "./environmentVariables"; import { pageLoadedAt } from "./errors"; interface EthereumProvider extends HttpProvider { @@ -31,11 +31,28 @@ export const onLoad = (title: string) => { dsn: SENTRY_DSN, // Used to separate testnet and mainnet errors - environment, + environment: `${DEFAULT_REN_NETWORK}-${NODE_ENV}`, // Used to track errors across versions release: SOURCE_VERSION, + ignoreErrors: [ + "Network Error", + "NetworkError", + "Failed to fetch", + "Network request failed", + "Wrong response id", + "Request failed or timed out", + "Invalid JSON RPC response", + "timeout of 0ms exceeded", + "header not found", + ], + blacklistUrls: [ + // Chrome extensions + /extensions\//i, + /^chrome:\/\//i, + ], + // Only throw errors generated from scripts at these URLs whitelistUrls: [ /.*republicprotocol.*/i, @@ -45,6 +62,9 @@ export const onLoad = (title: string) => { /.*localhost.*/i, /.*(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).*/ ], + + integrations: [new ExtraErrorData()], + }); Sentry.configureScope((scope) => { @@ -62,5 +82,5 @@ export const onLoad = (title: string) => { document.title = title; // Also set in index.html // tslint:disable-next-line: no-console - console.log(`${title} version hash: ${SOURCE_VERSION}`); + console.debug(`${title} version hash: ${SOURCE_VERSION}`); }; diff --git a/src/lib/react/serializable.ts b/src/lib/react/serializable.ts new file mode 100644 index 00000000..55816187 --- /dev/null +++ b/src/lib/react/serializable.ts @@ -0,0 +1,5 @@ + +export interface Serializable { + serialize(): string; + deserialize(str: string): T; +} diff --git a/src/lib/record.ts b/src/lib/record.ts deleted file mode 100644 index 70f4f204..00000000 --- a/src/lib/record.ts +++ /dev/null @@ -1,82 +0,0 @@ -// tslint:disable: no-any no-unnecessary-override no-reserved-keywords function-name - -import * as Immutable from "immutable"; - -/** - * Create a new class that can be instantiated. All instances of the class - * will be immutable, and will be guaranteed to have all properties of the - * interface T. Default values for these properties can be specified. Using - * the getter and setter methods are type safe. - * - * @param data An object defining the default value for instances of the - * class that will be returned. - * - * @return A class that can be used to instantiate immutable objects. - */ -export const Record = (data: Pick): RecordInterface => { - // The returned class inherits from the Immutable.Record class, using the - // data argument to specify the default property values. - return class extends Immutable.Record(data as any) { - public constructor(inner?: Partial) { - super(Immutable.fromJS(inner || {})); - } - /** - * A type safe getter. - * - * @param key The name of the property to get. It must be a property that - * exists in T. - * - * @return The value associated with the property. - */ - public get(key: K): V { - return super.get(key); - } - /** - * A type safe setter. - * - * @param key The name of the property to set. It must be a property that - * exists in T. - * - * @return A new instance that has all of the property values of the - * original instance, except for the property value that was set. - */ - public set(key: K, value: V): this { - return super.set(key, value); - } - /** - * A type safe merge. - * - * @param inner An object of properties, and associated values, that will - * be set. - * - * @return A new instance that has all of the property values of the - * original instance, except for the property values that were - * merged. - */ - public merge(inner: Partial | { - [key in K]: V; - }): this { - return super.merge(inner as any); - } - public toJS(): any { - return super.toJS(); - } - } as any as RecordInterface; -}; - -// An interface to which the return class will be cast. -type RecordInterface = new (inner?: Partial) => Props & Methods; - -// An interface of the properties that the class will have. -type Props = { - readonly [P in keyof T]: T[P]; -}; -// An interface of the methods that the class will have. -interface Methods { - get(key: K): V; - set(key: K, value: V): this; - merge(inner: Partial | { - [key in K]: V; - }): this; - toJS(): any; -} diff --git a/src/store/actions/trader/accountActions.tsx b/src/store/account/accountActions.tsx similarity index 54% rename from src/store/actions/trader/accountActions.tsx rename to src/store/account/accountActions.tsx index 8fa0c02f..5681cefe 100644 --- a/src/store/actions/trader/accountActions.tsx +++ b/src/store/account/accountActions.tsx @@ -1,50 +1,39 @@ import * as Sentry from "@sentry/browser"; import * as React from "react"; +import { RenNetworkDetails } from "@renproject/contracts"; +import { createAction } from "typesafe-actions"; import Web3 from "web3"; - -import { Dispatch } from "redux"; -import { createStandardAction } from "typesafe-actions"; import { provider } from "web3-providers"; import { toChecksumAddress } from "web3-utils"; -import { LoggedOut } from "../../../components/popups/LoggedOut"; -import { NoWeb3Popup } from "../../../components/popups/NoWeb3Popup"; -import { Language } from "../../../languages/language"; -import { _captureBackgroundException_ } from "../../../lib/errors"; -import { getWeb3BrowserName, Web3Browser } from "../../../lib/ethereum/browsers"; -import { getInjectedWeb3Provider } from "../../../lib/ethereum/wallet"; -import { history } from "../../../lib/history"; -import { EthNetwork, readOnlyWeb3 } from "../../types"; +import { LoggedOut } from "../../components/common/popups/LoggedOut"; +import { NoWeb3Popup } from "../../components/common/popups/NoWeb3Popup"; +import { Language } from "../../languages/language"; +import { getInjectedWeb3Provider } from "../../lib/ethereum/getWeb3"; +import { history } from "../../lib/react/history"; +import { ApplicationState } from "../applicationState"; import { clearPopup, setPopup } from "../popup/popupActions"; +import { AppDispatch } from "../rootReducer"; -export const storeWeb3 = createStandardAction("storeWeb3")(); -export const storeAddress = createStandardAction("storeAddress")(); -export const storeEthNetwork = createStandardAction("storeEthNetwork")(); +export const logout = createAction("LOGOUT")(); +export const login = createAction("LOGIN")<{ web3: Web3, address: string }>(); +export const storeRenNetwork = createAction("STORE_REN_NETWORK")(); -export const storeWeb3BrowserName = createStandardAction("storeWeb3BrowserName")(); +export const storeWeb3BrowserName = createAction("STORE_WEB3_BROWSER_NAME")(); -export const updateWeb3BrowserName = ( - newProvider: provider, -) => (dispatch: Dispatch) => { - /* - // Check for mobile - const { userAgent: ua } = navigator - const isIOS = ua.includes('iPhone') // “iPhone OS” - const isAndroid = ua.includes('Android') - */ +export const promptLogin = ( + options: { manual: boolean, redirect: boolean; showPopup: boolean; immediatePopup: boolean }, +) => async (dispatch: AppDispatch, getState: () => ApplicationState) => { + let cancelled = false; - const web3BrowserName = getWeb3BrowserName(newProvider); + const { renNetwork, loggedOut } = getState().account; - dispatch(storeWeb3BrowserName(web3BrowserName)); -}; - -export const login = ( - options: { redirect: boolean; showPopup: boolean; immediatePopup: boolean }, -) => async (dispatch: Dispatch) => { - let cancelled = false; + if (loggedOut && !options.manual) { + return; + } - const onClick = async () => (login({ redirect: false, showPopup: true, immediatePopup: true })(dispatch)); + const onClick = async () => (dispatch(promptLogin({ manual: true, redirect: false, showPopup: true, immediatePopup: true }))); const onCancel = () => { dispatch(clearPopup()); cancelled = true; @@ -57,7 +46,7 @@ export const login = ( if (ethereum && ethereum._metamask) { if (ethereum._metamask.isUnlocked && !(await ethereum._metamask.isUnlocked())) { promptMessage = Language.wallet.mustUnlock; - } else if (ethereum._metamask.isApproved && !(await ethereum._metamask.isApproved())) { + } else if ((ethereum._metamask.isApproved && !(await ethereum._metamask.isApproved()))) { promptMessage = Language.wallet.mustConnect; } } @@ -68,7 +57,7 @@ export const login = ( if (options.showPopup && options.immediatePopup) { dispatch(setPopup( { - popup: , + popup: , onCancel, overlay: true, }, @@ -96,7 +85,7 @@ export const login = ( // Even if the provider is on the wrong network, etc., we can still // detect the browser name (MetaMask, Status, etc.) const onAnyProvider = (anyProvider: provider) => { - updateWeb3BrowserName(anyProvider)(dispatch); + dispatch(storeWeb3BrowserName(anyProvider)); }; newProvider = await getInjectedWeb3Provider(onAnyProvider); @@ -123,9 +112,20 @@ export const login = ( return; } - // tslint:disable-next-line: no-any - const network = (await (newWeb3.eth.net as any).getNetworkType()); - dispatch(storeEthNetwork(network)); + const network = (await newWeb3.eth.net.getNetworkType()); + + if (network !== renNetwork.chain) { + if (options.showPopup && !cancelled) { + dispatch(setPopup( + { + popup: , + onCancel, + overlay: true, + }, + )); + } + return; + } dispatch(clearPopup()); @@ -139,8 +139,7 @@ export const login = ( }); // Store address in the store (and in local storage) - dispatch(storeAddress(address)); - dispatch(storeWeb3(newWeb3)); + dispatch(login({ web3: newWeb3, address })); /* // Check for mobile @@ -149,9 +148,7 @@ export const login = ( const isAndroid = ua.includes('Android') */ - const web3BrowserName = getWeb3BrowserName(newProvider); - - dispatch(storeWeb3BrowserName(web3BrowserName)); + dispatch(storeWeb3BrowserName(newProvider)); if (options.redirect) { // Navigate to the Exchange page @@ -159,33 +156,10 @@ export const login = ( } }; -export const logout = ( - options: { reload: boolean }, -) => async (dispatch: Dispatch) => { - - // Clear session account in store (and in local storage) - dispatch(storeAddress(null)); - dispatch(storeWeb3(readOnlyWeb3)); - - Sentry.configureScope((scope) => { - scope.setExtra("loggedIn", false); - }); - - if (options.reload) { - // const currentLocation = location.pathname; - // // history.push("/loading"); - // // Reload to clear all stores and cancel timeouts - // // (e.g. deposit/withdrawal confirmations) - // location.replace(currentLocation); - } -}; - // lookForLogout detects if 1) the user has changed or logged out of their Web3 // wallet -export const lookForLogout = ( - address: string, - web3: Web3, -) => async (dispatch: Dispatch) => { +export const lookForLogout = () => async (dispatch: AppDispatch, getState: () => ApplicationState) => { + const { address, web3 } = getState().account; if (!address) { return; @@ -196,19 +170,11 @@ export const lookForLogout = ( if (!accounts.includes(address.toLowerCase())) { const onClick = async () => { - await logout({ reload: true })(dispatch).catch((error) => { - _captureBackgroundException_(error, { - description: "Error in logout in accountActions", - }); - }); - await login({ redirect: false, showPopup: true, immediatePopup: false })(dispatch); + dispatch(logout()); + await dispatch(promptLogin({ manual: true, redirect: false, showPopup: true, immediatePopup: false })); }; const onCancel = async () => { - await logout({ reload: true })(dispatch).catch((error) => { - _captureBackgroundException_(error, { - description: "Error in logout in accountActions", - }); - }); + dispatch(logout()); dispatch(clearPopup()); }; diff --git a/src/store/account/accountReducer.ts b/src/store/account/accountReducer.ts new file mode 100644 index 00000000..88fb0f94 --- /dev/null +++ b/src/store/account/accountReducer.ts @@ -0,0 +1,34 @@ +import { ActionType, getType } from "typesafe-actions"; + +import { getWeb3BrowserName } from "../../lib/ethereum/browsers"; +import { AccountState, readOnlyWeb3 } from "../applicationState"; +import * as accountActions from "./accountActions"; + +type AccountAction = ActionType; + +export const accountReducer = (state: AccountState = new AccountState(), action: AccountAction): AccountState => { + switch (action.type) { + case getType(accountActions.logout): + return state + .set("web3", readOnlyWeb3) + .set("address", null) + .set("loggedOut", true) + .set("loggedInBefore", false); + + case getType(accountActions.login): + return state + .set("address", action.payload.address) + .set("web3", action.payload.web3) + .set("loggedInBefore", true); + + case getType(accountActions.storeWeb3BrowserName): + const web3BrowserName = getWeb3BrowserName(action.payload); + return state.set("web3BrowserName", web3BrowserName); + + case getType(accountActions.storeRenNetwork): + return state.set("renNetwork", action.payload); + + default: + return state; + } +}; diff --git a/src/store/account/darknodeActions.tsx b/src/store/account/darknodeActions.tsx new file mode 100644 index 00000000..0bc5d487 --- /dev/null +++ b/src/store/account/darknodeActions.tsx @@ -0,0 +1,103 @@ +import * as React from "react"; + +import { RenNetworkDetails } from "@renproject/contracts"; +import { TxStatus } from "@renproject/ren"; +import Web3 from "web3"; + +import { WithdrawPopup } from "../../components/common/popups/WithdrawPopup"; +import { withdrawOldToken, withdrawToken } from "../../lib/ethereum/contractWrites"; +import { AllTokenDetails, OldToken, Token } from "../../lib/ethereum/tokens"; +import { WaitForTX } from "../../lib/ethereum/waitForTX"; +import { ApplicationState } from "../applicationState"; +import { clearPopup, setPopup } from "../popup/popupActions"; +import { AppDispatch } from "../rootReducer"; + +export const showWithdrawToken = async ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string | null, + darknodeID: string, + token: Token | OldToken, + waitForTX: WaitForTX, + callClearPopup: () => void, + callSetPopup: ( + popup: JSX.Element, + onCancel: () => void, + ) => void, +) => new Promise(async (resolve, reject) => { + const tokenDetails = AllTokenDetails.get(token); + if (tokenDetails === undefined) { + throw new Error("Unknown token"); + } + + if (!address) { + throw new Error(`Unable to retrieve account address.`); + } + + let shiftStatus = TxStatus.TxStatusNil; + + const onStatus = (status: TxStatus) => { + shiftStatus = status; + }; + + const withdraw = withdrawToken( + web3, + renNetwork, + address, + darknodeID, + token, + waitForTX, + onStatus, + ); + const onCancel = () => { + callClearPopup(); + reject(); + }; + const onDone = () => { + callClearPopup(); + resolve(); + }; + if (tokenDetails.wrapped) { + callSetPopup( + , + onCancel, + ); + } else { + try { + await withdraw(); + resolve(); + } catch (error) { + onCancel(); + } + } +}); + +export const withdrawReward = ( + darknodeID: string, + token: Token | OldToken, + waitForTX: WaitForTX, +) => async (dispatch: AppDispatch, getState: () => ApplicationState) => { + const { web3, address, renNetwork } = getState().account; + + const tokenDetails = AllTokenDetails.get(token); + if (tokenDetails === undefined) { + throw new Error("Unknown token"); + } + + if (tokenDetails.old && renNetwork.name === "mainnet") { + await withdrawOldToken(web3, renNetwork, address, darknodeID, token, waitForTX); + } else { + const callClearPopup = () => { dispatch(clearPopup()); }; + const callSetPopup = ( + popup: JSX.Element, + onCancel: () => void, + ) => dispatch(setPopup({ popup, overlay: true, onCancel })); + await showWithdrawToken(web3, renNetwork, address, darknodeID, token, waitForTX, callClearPopup, callSetPopup); + } +}; diff --git a/src/store/actions/statistics/operatorPopupActions.tsx b/src/store/account/operatorPopupActions.tsx similarity index 53% rename from src/store/actions/statistics/operatorPopupActions.tsx rename to src/store/account/operatorPopupActions.tsx index 5666e61d..65a33603 100644 --- a/src/store/actions/statistics/operatorPopupActions.tsx +++ b/src/store/account/operatorPopupActions.tsx @@ -1,58 +1,61 @@ import * as React from "react"; +import { RenNetworkDetails } from "@renproject/contracts"; +import { Currency, CurrencyIcon } from "@renproject/react-components"; import BigNumber from "bignumber.js"; import Web3 from "web3"; -import { Dispatch } from "redux"; - -import { CurrencyIcon } from "../../../components/CurrencyIcon"; -import { MultiStepPopup } from "../../../components/popups/MultiStepPopup"; -import { TokenBalance } from "../../../components/TokenBalance"; -import { _captureBackgroundException_ } from "../../../lib/errors"; -import { Token } from "../../../lib/ethereum/tokens"; -import { Currency, EthNetwork, TokenPrices } from "../../types"; +import { MultiStepPopup } from "../../components/common/popups/MultiStepPopup"; +import { TokenBalance } from "../../components/common/TokenBalance"; +import { getMinimumBond } from "../../lib/ethereum/contractReads"; +import { + approveNode, deregisterNode, fundNode, refundNode, registerNode, +} from "../../lib/ethereum/contractWrites"; +import { Token, TokenPrices } from "../../lib/ethereum/tokens"; +import { connectWaitForTX } from "../../lib/ethereum/waitForTX"; +import { _catchBackgroundException_ } from "../../lib/react/errors"; +import { updateDarknodeDetails } from "../network/operatorActions"; import { setPopup } from "../popup/popupActions"; -import { approveNode, changeCycle, claimForNode, deregisterNode, fundNode, refundNode, registerNode } from "../trader/darknode"; -import { updateDarknodeStatistics } from "./operatorActions"; +import { AppDispatch } from "../rootReducer"; export const showRegisterPopup = ( web3: Web3, - ethNetwork: EthNetwork, + renNetwork: RenNetworkDetails, address: string, darknodeID: string, publicKey: string, - minimumBond: BigNumber, - tokenPrices: TokenPrices, onCancel: () => void, onDone: () => void) => async (dispatch: Dispatch) => { + tokenPrices: TokenPrices, onCancel: () => void, onDone: () => void) => async (dispatch: AppDispatch) => { + + const minimumBond = await getMinimumBond(web3, renNetwork); const step1 = async () => { - await approveNode(web3, ethNetwork, address, minimumBond)(dispatch); + await approveNode(web3, renNetwork, address, minimumBond, connectWaitForTX(dispatch)); }; const step2 = async () => { await registerNode( web3, - ethNetwork, + renNetwork, address, darknodeID, publicKey, - minimumBond || new BigNumber(100000000000000000000000), + minimumBond, onCancel, - onDone - )(dispatch); + onDone, + connectWaitForTX(dispatch), + ); if (tokenPrices) { try { - await updateDarknodeStatistics(web3, ethNetwork, darknodeID, tokenPrices)(dispatch); + await dispatch(updateDarknodeDetails(web3, renNetwork, darknodeID, tokenPrices)); } catch (error) { - _captureBackgroundException_(error, { - description: "Error thrown in updateDarknodeStatistics in showRegisterPopup", - }); + _catchBackgroundException_(error, "Error in operatorPopupActions > showRegisterPopup > updateDarknodeDetails"); } } }; const steps = [ - { call: step1, name: "Approve 100'000 REN" }, + { call: step1, name: `Approve ${renNetwork.name === "chaosnet" ? "10K" : "100K"} REN` }, { call: step2, name: "Register darknode" }, ]; @@ -65,8 +68,8 @@ Are you sure you want to continue?`; steps={steps} onCancel={onCancel} title={title} - confirm={true} warning={warning} + confirm />, onCancel, dismissible: false, @@ -76,17 +79,17 @@ Are you sure you want to continue?`; export const showDeregisterPopup = ( web3: Web3, - ethNetwork: EthNetwork, + renNetwork: RenNetworkDetails, address: string, darknodeID: string, remainingFees: BigNumber | null, quoteCurrency: Currency, onCancel: () => void, onDone: () => void -) => async (dispatch: Dispatch) => { +) => async (dispatch: AppDispatch) => { const step1 = async () => { - await deregisterNode(web3, ethNetwork, address, darknodeID, onCancel, onDone)(dispatch); + await deregisterNode(web3, renNetwork, address, darknodeID, onCancel, onDone, connectWaitForTX(dispatch)); }; const steps = [ @@ -118,9 +121,9 @@ export const showDeregisterPopup = ( steps={steps} onCancel={onCancel} title={title} - confirm={true} ignoreWarning={ignoreWarning} warning={warning} + confirm />, onCancel, dismissible: false, @@ -131,15 +134,15 @@ export const showDeregisterPopup = ( export const showRefundPopup = ( web3: Web3, - ethNetwork: EthNetwork, + renNetwork: RenNetworkDetails, address: string, darknodeID: string, onCancel: () => void, onDone: () => void, -) => async (dispatch: Dispatch) => { +) => async (dispatch: AppDispatch) => { const step1 = async () => { - await refundNode(web3, ethNetwork, address, darknodeID, onCancel, onDone)(dispatch); + await refundNode(web3, renNetwork, address, darknodeID, onCancel, onDone, connectWaitForTX(dispatch)); }; const steps = [ @@ -170,10 +173,10 @@ export const showFundPopup = ( ethAmountStr: string, onCancel: () => void, onDone: () => void, -) => async (dispatch: Dispatch) => { +) => async (dispatch: AppDispatch) => { const step1 = async () => { - await fundNode(web3, address, darknodeID, ethAmountStr, onCancel, onDone)(dispatch); + await fundNode(web3, address, darknodeID, ethAmountStr, onCancel, onDone, connectWaitForTX(dispatch)); }; const steps = [ @@ -197,50 +200,50 @@ export const showFundPopup = ( )); }; -export const showClaimPopup = ( - web3: Web3, - ethNetwork: EthNetwork, - claimBeforeCycle: boolean, - address: string, - darknodeID: string, - title: string, - onCancel: () => void, - onDone: () => void, -) => async (dispatch: Dispatch) => { - - const useFixedGasLimit = !claimBeforeCycle; - - const claimStep = { - call: async () => { - await claimForNode(web3, ethNetwork, useFixedGasLimit, address, darknodeID, onCancel, onDone)(dispatch); - }, - name: "Claim rewards", - }; - - const ignoreError = claimBeforeCycle; - const changeCycleStep = { - call: async () => { - await changeCycle(web3, ethNetwork, ignoreError, address, onCancel, onDone)(dispatch); - }, - name: `Change cycle${claimBeforeCycle ? " (optional)" : ""}`, - }; - - const step1 = claimBeforeCycle ? claimStep : changeCycleStep; - const step2 = claimBeforeCycle ? changeCycleStep : claimStep; - - const steps = [step1, step2]; - - dispatch(setPopup( - { - popup: , - onCancel, - dismissible: false, - overlay: true, - }, - )); -}; +// export const showClaimPopup = ( +// web3: Web3, +// renNetwork: RenNetworkDetails, +// claimBeforeCycle: boolean, +// address: string, +// darknodeID: string, +// title: string, +// onCancel: () => void, +// onDone: () => void, +// ) => async (dispatch: AppDispatch) => { + +// const useFixedGasLimit = !claimBeforeCycle; + +// const claimStep = { +// call: async () => { +// await claimForNode(web3, renNetwork, useFixedGasLimit, address, darknodeID, onCancel, onDone, connectWaitForTX(dispatch)); +// }, +// name: "Claim rewards", +// }; + +// const ignoreError = claimBeforeCycle; +// const changeCycleStep = { +// call: async () => { +// await changeCycle(web3, renNetwork, ignoreError, address, onCancel, onDone, connectWaitForTX(dispatch)); +// }, +// name: `Change cycle${claimBeforeCycle ? " (optional)" : ""}`, +// }; + +// const step1 = claimBeforeCycle ? claimStep : changeCycleStep; +// const step2 = claimBeforeCycle ? changeCycleStep : claimStep; + +// const steps = [step1, step2]; + +// dispatch(setPopup( +// { +// popup: , +// onCancel, +// dismissible: false, +// overlay: true, +// }, +// )); +// }; diff --git a/src/store/actions/popup/popupActions.ts b/src/store/actions/popup/popupActions.ts deleted file mode 100644 index 9e48b333..00000000 --- a/src/store/actions/popup/popupActions.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { createStandardAction } from "typesafe-actions"; - -export const setPopup = createStandardAction("setPopup")<{ - popup: JSX.Element; - overlay?: boolean; - dismissible?: boolean; - onCancel(): void; -}>(); - -export const clearPopup = createStandardAction("clearPopup")(); diff --git a/src/store/actions/statistics/networkActions.ts b/src/store/actions/statistics/networkActions.ts deleted file mode 100644 index c6000bb9..00000000 --- a/src/store/actions/statistics/networkActions.ts +++ /dev/null @@ -1,38 +0,0 @@ -import BigNumber from "bignumber.js"; -import { OrderedMap } from "immutable"; -import { Dispatch } from "redux"; -import { createStandardAction } from "typesafe-actions"; -import Web3 from "web3"; - -import { DarknodeRegistryWeb3 } from "../../../lib/ethereum/contracts/bindings/darknodeRegistry"; -import { getContracts } from "../../../lib/ethereum/contracts/contracts"; -import { getPrices, Token } from "../../../lib/ethereum/tokens"; -import { EthNetwork, TokenPrices } from "../../types"; - -export const storeTokenPrices = createStandardAction("storeTokenPrices")(); - -export const storeMinimumBond = createStandardAction("storeMinimumBond")(); - -export const updateCurrentCycle = createStandardAction("updateCurrentCycle")(); -export const updatePreviousCycle = createStandardAction("updatePreviousCycle")(); - -export const updatePendingRewards = createStandardAction("updatePendingRewards")>>(); -export const updatePendingTotalInEth = createStandardAction("updatePendingTotalInEth")>(); -export const updateCycleTimeout = createStandardAction("updateCycleTimeout")(); - -export const updateNetworkStatistics = (web3: Web3, ethNetwork: EthNetwork) => async (dispatch: Dispatch) => { - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - const minimumBondBN = await darknodeRegistry.methods.minimumBond().call(); - if (minimumBondBN) { - const minimumBond = new BigNumber(minimumBondBN.toString()); - dispatch(storeMinimumBond(minimumBond)); - } -}; - -export const updateTokenPrices = () => async (dispatch: Dispatch) => { - const tokenPrices = await getPrices(); - dispatch(storeTokenPrices(tokenPrices)); -}; diff --git a/src/store/actions/statistics/operatorActions.ts b/src/store/actions/statistics/operatorActions.ts deleted file mode 100644 index 869bf000..00000000 --- a/src/store/actions/statistics/operatorActions.ts +++ /dev/null @@ -1,607 +0,0 @@ -import BigNumber from "bignumber.js"; -import { List, OrderedMap, OrderedSet } from "immutable"; -import { Dispatch } from "redux"; -import { createStandardAction } from "typesafe-actions"; -import Web3 from "web3"; -import { PromiEvent } from "web3-core"; -import { Block } from "web3-eth"; -import { toChecksumAddress } from "web3-utils"; - -import { _captureBackgroundException_, _noCapture_ } from "../../../lib/errors"; -import { DarknodePaymentWeb3 } from "../../../lib/ethereum/contracts/bindings/darknodePayment"; -import { - DarknodePaymentStoreWeb3, -} from "../../../lib/ethereum/contracts/bindings/darknodePaymentStore"; -import { DarknodeRegistryWeb3 } from "../../../lib/ethereum/contracts/bindings/darknodeRegistry"; -import { getContracts, tokenAddresses } from "../../../lib/ethereum/contracts/contracts"; -import { getOperatorDarknodes } from "../../../lib/ethereum/operator"; -import { NewTokenDetails, OldToken, OldTokenDetails, Token } from "../../../lib/ethereum/tokens"; -import { Currency, DarknodeDetails, DarknodeFeeStatus, EthNetwork, TokenPrices } from "../../types"; -import { - updateCurrentCycle, updateCycleTimeout, updatePendingRewards, updatePendingTotalInEth, - updatePreviousCycle, -} from "./networkActions"; - -export const addRegisteringDarknode = createStandardAction("addRegisteringDarknode")<{ - darknodeID: string; - publicKey: string; -}>(); - -export const removeRegisteringDarknode = createStandardAction("removeRegisteringDarknode")<{ - darknodeID: string; -}>(); - -export const removeDarknode = createStandardAction("removeDarknode")<{ - darknodeID: string; - operator: string; -}>(); - -export const storeDarknodeList = createStandardAction("storeDarknodeList")<{ - darknodeList: OrderedSet; - address: string; -}>(); - -export const storeQuoteCurrency = createStandardAction("storeQuoteCurrency")<{ quoteCurrency: Currency }>(); - -export const storeSecondsPerBlock = createStandardAction("storeSecondsPerBlock")<{ secondsPerBlock: number }>(); - -export const addToWithdrawAddresses = createStandardAction("addToWithdrawAddresses")<{ token: Token, address: string }>(); -export const removeFromWithdrawAddresses = createStandardAction("removeFromWithdrawAddresses")<{ token: Token, address: string }>(); - -export const setDarknodeDetails = createStandardAction("setDarknodeDetails")<{ - darknodeDetails: DarknodeDetails; -}>(); - -export const updateDarknodeHistory = createStandardAction("updateDarknodeHistory")<{ - darknodeID: string; - balanceHistory: OrderedMap; -}>(); - -export const setDarknodeName = createStandardAction("setDarknodeName")<{ darknodeID: string; name: string }>(); - -// tslint:disable-next-line: no-any -export const addTransaction = createStandardAction("addTransaction")<{ txHash: string; tx: PromiEvent }>(); -export const setTxConfirmations = createStandardAction("setTxConfirmations")<{ txHash: string; confirmations: number }>(); - -export const waitForTX = (promiEvent: PromiEvent, onConfirmation?: (confirmations?: number) => void) => async (dispatch: Dispatch) => new Promise((resolve, reject) => { - promiEvent.on("transactionHash", (txHash) => { - resolve(txHash); - dispatch(addTransaction({ txHash, tx: promiEvent })); - // tslint:disable-next-line: no-any - (window as any).tx = promiEvent; - promiEvent.on("confirmation", (confirmations) => { - dispatch(setTxConfirmations({ txHash, confirmations })); - if (onConfirmation) { onConfirmation(confirmations); } - }); - promiEvent.on("error", () => { - dispatch(setTxConfirmations({ txHash, confirmations: -1 })); - }); - }).catch(reject); -}); - -export const calculateSecondsPerBlock = ( - web3: Web3, -) => async (dispatch: Dispatch) => { - const sampleSize = 1000; - - const fetchedBlockNumber = await web3.eth.getBlockNumber(); - let currentBlockNumber = fetchedBlockNumber; - let currentBlock: Block | null = null; - // If current block isn't know yet, try previous block, up to 10 times - while (currentBlock === null && currentBlockNumber > fetchedBlockNumber - 10) { - currentBlock = await web3.eth.getBlock(currentBlockNumber); - currentBlockNumber -= 1; - } - const previousBlock: Block | null = await web3.eth.getBlock(currentBlockNumber - sampleSize) as Block | null; - - if (currentBlock !== null && previousBlock !== null) { - const currentTimestamp = parseInt(currentBlock.timestamp.toString(), 10); - const previousTimestamp = parseInt(previousBlock.timestamp.toString(), 10); - const secondsPerBlock = Math.floor((currentTimestamp - previousTimestamp) / sampleSize); - - dispatch(storeSecondsPerBlock({ secondsPerBlock })); - } -}; - -const getOldBalances = async ( - web3: Web3, - ethNetwork: EthNetwork, - darknodeID: string, -): Promise> => { - - const contract = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRewardVault.ABI, - getContracts(ethNetwork).DarknodeRewardVault.address, - ); - - let feesEarned = OrderedMap(); - - const balances = OldTokenDetails.map(async (_tokenDetails, token) => { - - const balance = new BigNumber(await contract.methods.darknodeBalances(darknodeID, tokenAddresses(token, ethNetwork)).call()); - - return { - balance, - token, - }; - }).valueSeq(); - // TODO: Don't use Promise.all - const res = await Promise.all(balances); - - for (const { balance, token } of res) { - feesEarned = feesEarned.set(token, balance); - } - - return feesEarned; -}; - -// FIXME: safePromiseAllList still throws uncaught error -// The same as Promise.all except that if an entry throws, it sets it to the -// provided default value instead of throwing the entire promise. -const safePromiseAllList = async (orderedMap: List>, defaultValue: b): Promise> => { - let newOrderedMap = List(); - for (const valueP of orderedMap.toArray()) { - try { - newOrderedMap = newOrderedMap.push(await valueP); - } catch (error) { - console.log(error); - newOrderedMap = newOrderedMap.push(defaultValue); - } - } - return newOrderedMap; -}; - -// The same as Promise.all except that if an entry throws, it sets it to the -// provided default value instead of throwing the entire promise. -// This variation maps over an OrderedMap instead of an array. -const safePromiseAllMap = async (orderedMap: OrderedMap>, defaultValue: b): Promise> => { - let newOrderedMap = OrderedMap(); - for (const [key, valueP] of orderedMap.toArray()) { - try { - newOrderedMap = newOrderedMap.set(key, await valueP); - } catch (error) { - console.log(error); - newOrderedMap = newOrderedMap.set(key, defaultValue); - } - } - return newOrderedMap; -}; - -const getBalances = async ( - web3: Web3, - ethNetwork: EthNetwork, - darknodeID: string, -): Promise> => { - - const contract: DarknodePaymentWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodePayment.ABI, - getContracts(ethNetwork).DarknodePayment.address, - ); - - let feesEarned = OrderedMap(); - - // const address = (await web3.eth.getAccounts())[0]; - - const balances = await safePromiseAllList( - NewTokenDetails.map(async (_tokenDetails, token) => { - let balance1; - try { - const balance1Call = await contract.methods.darknodeBalances(darknodeID, tokenAddresses(token, ethNetwork)).call(); - balance1 = new BigNumber((balance1Call || "0").toString()); - } catch (error) { - balance1 = new BigNumber(0); - } - // const balance2 = tokenDetails.wrapped ? await new (web3.eth.Contract)( - // contracts.WarpGateToken.ABI, - // tokenDetails.address, - // ).methods.balanceOf(address).call() : new BigNumber(0); - - return { - balance: balance1, // .plus(balance2), - token: token as Token | null, - }; - }).valueSeq().toList(), - { - balance: new BigNumber(0), - token: null, - } - ); - - for (const { balance, token } of balances.toArray()) { - if (token) { - feesEarned = feesEarned.set(token, balance); - } - } - - return feesEarned; -}; - -const sumUpFeeMap = ( - feesEarned: OrderedMap, - tokenPrices: TokenPrices, -): BigNumber => { - - let totalEth = new BigNumber(0); - - NewTokenDetails.map((tokenDetails, token) => { - const price = tokenPrices.get(token, undefined); - const decimals = tokenDetails ? new BigNumber(tokenDetails.decimals.toString()).toNumber() : 0; - const inEth = feesEarned.get(token, new BigNumber(0)) - .div(Math.pow(10, decimals)) - .multipliedBy(price ? price.get(Currency.ETH, 0) : 0); - totalEth = totalEth.plus(inEth); - return null; - }); - - // Convert to wei - return totalEth.multipliedBy(new BigNumber(10).pow(18)); -}; - -const sumUpFees = ( - feesEarned: OrderedMap, - oldFeesEarned: OrderedMap, - tokenPrices: TokenPrices, -): BigNumber => { - return sumUpFeeMap(feesEarned, tokenPrices).plus(sumUpFeeMap(oldFeesEarned, tokenPrices)); -}; - -export const updateCycleAndPendingRewards = ( - web3: Web3, - ethNetwork: EthNetwork, - tokenPrices: TokenPrices | null, -) => async (dispatch: Dispatch) => { - const darknodePayment: DarknodePaymentWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodePayment.ABI, - getContracts(ethNetwork).DarknodePayment.address, - ); - - let pendingRewards = OrderedMap>(); - - const currentCycle = await darknodePayment.methods.currentCycle().call(); - const previousCycle = await darknodePayment.methods.previousCycle().call(); - - const previous = await safePromiseAllMap( - NewTokenDetails.map(async (_tokenDetails, token) => { - try { - const previousCycleRewardShareBN = await darknodePayment.methods.previousCycleRewardShare(tokenAddresses(token, ethNetwork)).call(); - if (previousCycleRewardShareBN === null) { - return new BigNumber(0); - } - return new BigNumber(previousCycleRewardShareBN.toString()); - } catch (error) { - return new BigNumber(0); - } - }).toOrderedMap(), - new BigNumber(0), - ); - if (previousCycle !== null) { - pendingRewards = pendingRewards.set(previousCycle.toString(), previous); - } - - const currentShareCountBN = await darknodePayment.methods.shareCount().call(); - const current = await safePromiseAllMap( - NewTokenDetails.map(async (_tokenDetails, token) => { - if (currentShareCountBN === null) { - return new BigNumber(0); - } - const currentShareCount = new BigNumber(currentShareCountBN.toString()); - try { - if (currentShareCount.isZero()) { - return new BigNumber(0); - } - const currentCycleRewardPool = await darknodePayment.methods.currentCycleRewardPool(tokenAddresses(token, ethNetwork)).call(); - if (currentCycleRewardPool === null) { - return new BigNumber(0); - } - return new BigNumber((currentCycleRewardPool).toString()).div(currentShareCount); - } catch (error) { - return new BigNumber(0); - } - } - ).toOrderedMap(), - new BigNumber(0), - ); - if (currentCycle !== null) { - pendingRewards = pendingRewards.set(currentCycle.toString(), current); - } - - const cycleTimeoutBN = (await darknodePayment.methods.cycleTimeout().call()); - - if (tokenPrices) { - const previousTotal = sumUpFeeMap(previous, tokenPrices); - const currentTotal = sumUpFeeMap(current, tokenPrices); - let pendingTotalInEth = OrderedMap(); - if (previousCycle !== null) { - pendingTotalInEth = pendingTotalInEth.set(previousCycle.toString(), previousTotal); - } - if (currentCycle !== null) { - pendingTotalInEth = pendingTotalInEth.set(currentCycle.toString(), currentTotal); - } - dispatch(updatePendingTotalInEth(pendingTotalInEth)); - } - - if (currentCycle !== null) { - dispatch(updateCurrentCycle(currentCycle.toString())); - } - if (previousCycle !== null) { - dispatch(updatePreviousCycle(previousCycle.toString())); - } - dispatch(updatePendingRewards(pendingRewards)); - if (cycleTimeoutBN !== null) { - dispatch(updateCycleTimeout(new BigNumber(cycleTimeoutBN.toString()))); - } -}; - -const getDarknodeOperator = async (web3: Web3, ethNetwork: EthNetwork, darknodeID: string): Promise => { - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - const owner = await darknodeRegistry.methods.getDarknodeOwner(darknodeID).call(); - if (owner === null) { - throw _noCapture_(new Error("Unable to retrieve darknode owner")); - } - return owner; -}; - -const getDarknodePublicKey = async (web3: Web3, ethNetwork: EthNetwork, darknodeID: string): Promise => { - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - const publicKey = await darknodeRegistry.methods.getDarknodePublicKey(darknodeID).call(); - if (publicKey === null) { - throw _noCapture_(new Error("Unable to retrieve darknode public key")); - } - return publicKey; -}; - -export enum RegistrationStatus { - Unknown = "", - Unregistered = "unregistered", - RegistrationPending = "registration pending", - Registered = "registered", - DeregistrationPending = "deregistration pending", - Deregistered = "awaiting refund period", - Refundable = "refundable", -} - -const getDarknodeStatus = async (web3: Web3, ethNetwork: EthNetwork, darknodeID: string): Promise => { - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - - try { - const [ - isPendingRegistration, - isPendingDeregistration, - isDeregisterable, - isRefunded, - isRefundable, - ] = await Promise.all([ - darknodeRegistry.methods.isPendingRegistration(darknodeID).call(), - darknodeRegistry.methods.isPendingDeregistration(darknodeID).call(), - darknodeRegistry.methods.isDeregisterable(darknodeID).call(), - darknodeRegistry.methods.isRefunded(darknodeID).call(), - darknodeRegistry.methods.isRefundable(darknodeID).call(), - ]); - - if (isRefunded) { - return RegistrationStatus.Unregistered; - } else if (isPendingRegistration) { - return RegistrationStatus.RegistrationPending; - } else if (isDeregisterable) { - return RegistrationStatus.Registered; - } else if (isPendingDeregistration) { - return RegistrationStatus.DeregistrationPending; - } else if (isRefundable) { - return RegistrationStatus.Refundable; - } else { - return RegistrationStatus.Deregistered; - } - } catch (error) { - _captureBackgroundException_(error, { - description: "Unknown darknode registration status", - }); - return RegistrationStatus.Unknown; - } - -}; - -export const updateDarknodeStatistics = ( - web3: Web3, - ethNetwork: EthNetwork, - darknodeID: string, - tokenPrices: TokenPrices | null, -) => async (dispatch: Dispatch) => { - darknodeID = toChecksumAddress(darknodeID.toLowerCase()); - - // Get eth Balance - const ethBalanceBN = await web3.eth.getBalance(darknodeID); - - let ethBalance = new BigNumber(0); - if (ethBalanceBN) { - ethBalance = new BigNumber(ethBalanceBN.toString()); - } - - // Get earned fees - const feesEarned = await getBalances(web3, ethNetwork, darknodeID); - const oldFeesEarned = await getOldBalances(web3, ethNetwork, darknodeID); - let feesEarnedTotalEth = new BigNumber(0); - if (tokenPrices) { - feesEarnedTotalEth = sumUpFees(feesEarned, oldFeesEarned, tokenPrices); - } - - // Get darknode operator and public key - const operator = await getDarknodeOperator(web3, ethNetwork, darknodeID); - const publicKey = await getDarknodePublicKey(web3, ethNetwork, darknodeID); - - // Get registration status - const registrationStatus = await getDarknodeStatus(web3, ethNetwork, darknodeID); - - // Cycle status //////////////////////////////////////////////////////////// - - const darknodePayment: DarknodePaymentWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodePayment.ABI, - getContracts(ethNetwork).DarknodePayment.address, - ); - - const darknodePaymentStore: DarknodePaymentStoreWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodePaymentStore.ABI, - getContracts(ethNetwork).DarknodePaymentStore.address, - ); - - const currentCycleBN = await darknodePayment.methods.currentCycle().call(); - const previousCycleBN = await darknodePayment.methods.previousCycle().call(); - const blacklisted = await darknodePaymentStore.methods.isBlacklisted(darknodeID).call(); - let currentStatus; - let previousStatus; - if (blacklisted) { - currentStatus = DarknodeFeeStatus.BLACKLISTED; - previousStatus = DarknodeFeeStatus.BLACKLISTED; - } else { - const whitelistedTimeCall = await darknodePaymentStore.methods.darknodeWhitelist(darknodeID).call(); - const whitelistedTime = whitelistedTimeCall === null ? new BigNumber(0) : new BigNumber(whitelistedTimeCall.toString()); - if (whitelistedTime.isZero()) { - currentStatus = DarknodeFeeStatus.NOT_WHITELISTED; - previousStatus = DarknodeFeeStatus.NOT_WHITELISTED; - } else { - currentStatus = DarknodeFeeStatus.NOT_CLAIMED; - const cycleStartTimeBN = await darknodePayment.methods.cycleStartTime().call(); - if (!cycleStartTimeBN || whitelistedTime.gte(cycleStartTimeBN.toString())) { - previousStatus = DarknodeFeeStatus.NOT_WHITELISTED; - } else { - if (previousCycleBN === null) { - previousStatus = DarknodeFeeStatus.CLAIMED; - } else { - const claimed = await darknodePayment.methods.rewardClaimed(darknodeID, previousCycleBN.toString()).call(); - if (claimed) { - previousStatus = DarknodeFeeStatus.CLAIMED; - } else { - previousStatus = DarknodeFeeStatus.NOT_CLAIMED; - } - } - } - } - } - - let cycleStatus = OrderedMap(); - if (currentCycleBN !== null) { - cycleStatus = cycleStatus.set(currentCycleBN.toString(), currentStatus); - } - if (previousCycleBN !== null) { - cycleStatus = cycleStatus.set(previousCycleBN.toString(), previousStatus); - } - - // Store details /////////////////////////////////////////////////////////// - - const darknodeDetails = new DarknodeDetails({ - ID: darknodeID, - multiAddress: "" as string, - publicKey, - ethBalance, - feesEarned, - oldFeesEarned, - feesEarnedTotalEth, - - cycleStatus, - averageGasUsage: 0, - lastTopUp: null, - expectedExhaustion: null, - peers: 0, - registrationStatus, - operator, - }); - - dispatch(setDarknodeDetails({ darknodeDetails })); -}; - -export const updateOperatorStatistics = ( - web3: Web3, - ethNetwork: EthNetwork, - address: string, - tokenPrices: TokenPrices | null, - previousDarknodeList: List | null, -) => async (dispatch: Dispatch) => { - await updateCycleAndPendingRewards(web3, ethNetwork, tokenPrices)(dispatch); - - let darknodeList = previousDarknodeList || List(); - - const currentDarknodes = await getOperatorDarknodes(web3, ethNetwork, address); - dispatch(storeDarknodeList({ darknodeList: currentDarknodes, address })); - - // The lists are merged in the reducer as well, but we combine them again - // before passing into `updateDarknodeStatistics` - currentDarknodes.map((darknodeID: string) => { - if (!darknodeList.contains(darknodeID)) { - darknodeList = darknodeList.push(darknodeID); - } - return null; - }); - - await Promise.all(darknodeList.toList().map(async (darknodeID: string) => { - return updateDarknodeStatistics(web3, ethNetwork, darknodeID, tokenPrices)(dispatch); - }).toArray()); -}; - -export const HistoryIterations = 5; - -export enum HistoryPeriods { - Day = 60 * 60 * 24, - Week = Day * 7, - Month = Week * 4, - HalfYear = Week * 26, - Year = Week * 52, -} - -export const fetchDarknodeBalanceHistory = ( - web3: Web3, - darknodeID: string, - previousHistory: OrderedMap | null, - historyPeriod: HistoryPeriods, - secondsPerBlock: number, -) => async (dispatch: Dispatch) => { - let balanceHistory = previousHistory || OrderedMap(); - - // If the page is kept open, the history data will keep growing, so we limit - // it to 200 entries. - if (balanceHistory.size > 200) { - balanceHistory = OrderedMap(); - } - - const currentBlock = await web3.eth.getBlockNumber(); - - const jump = Math.floor((historyPeriod / secondsPerBlock) / HistoryIterations); - - for (let i = 0; i < HistoryIterations; i++) { - // Move back by `jump` blocks - let block = currentBlock - i * jump; - - // ... - block = block - block % jump; - - if (!balanceHistory.has(block)) { - const blockBalance = await web3.eth.getBalance(darknodeID, block) as string | null; - - if (blockBalance !== null) { - const balance = new BigNumber(blockBalance.toString()); - balanceHistory = balanceHistory.set(block, balance); - } - } - } - - // Also add most recent block - if (!balanceHistory.has(currentBlock)) { - const currentBalance = await web3.eth.getBalance(darknodeID, currentBlock) as string | null; - - if (currentBalance !== null) { - const balance = new BigNumber(currentBalance.toString()); - balanceHistory = balanceHistory.set(currentBlock, balance); - } - } - - balanceHistory = balanceHistory.sortBy((_: BigNumber, value: number) => value); - - dispatch(updateDarknodeHistory({ darknodeID, balanceHistory })); -}; diff --git a/src/store/actions/trader/darknode.tsx b/src/store/actions/trader/darknode.tsx deleted file mode 100644 index a4994b4e..00000000 --- a/src/store/actions/trader/darknode.tsx +++ /dev/null @@ -1,374 +0,0 @@ -import * as React from "react"; - -import BigNumber from "bignumber.js"; -import { decode as decode58 } from "bs58"; -import { Dispatch } from "redux"; -import Web3 from "web3"; -import { Contract } from "web3-eth-contract"; - -import { WithdrawPopup } from "../../../components/popups/WithdrawPopup"; -import { alreadyPast } from "../../../lib/conversion"; -import { _noCapture_ } from "../../../lib/errors"; -import { DarknodePaymentWeb3 } from "../../../lib/ethereum/contracts/bindings/darknodePayment"; -import { DarknodeRegistryWeb3 } from "../../../lib/ethereum/contracts/bindings/darknodeRegistry"; -import { getContracts, tokenAddresses } from "../../../lib/ethereum/contracts/contracts"; -import { AllTokenDetails, OldToken, Token } from "../../../lib/ethereum/tokens"; -import { EthNetwork } from "../../../store/types"; -import { clearPopup, setPopup } from "../popup/popupActions"; -import { waitForTX } from "../statistics/operatorActions"; - -export const bridgedToken = (web3: Web3, ethNetwork: EthNetwork, address: string): Contract => { - return new web3.eth.Contract(getContracts(ethNetwork).WarpGateToken.ABI, address); -}; - -export const btcAddressToHex = (address: string) => `0x${decode58(address).toString("hex")}`; -export const zecAddressToHex = (address: string) => `0x${decode58(address).toString("hex")}`; - -const burn = ( - web3: Web3, - ethNetwork: EthNetwork, - trader: string, - currency: Token, - to: string, -) => async (dispatch: Dispatch) => { - const contract = currency === Token.BTC ? bridgedToken(web3, ethNetwork, tokenAddresses(Token.BTC, ethNetwork)) : - currency === Token.ZEC ? bridgedToken(web3, ethNetwork, tokenAddresses(Token.ZEC, ethNetwork)) : - undefined; - - if (contract === undefined) { - throw new Error("Something went wrong, please reload and try again"); - } - - const toHex = currency === Token.BTC ? btcAddressToHex(to) : - currency === Token.ZEC ? zecAddressToHex(to) : - to; - - const amount = new BigNumber((await contract.methods.balanceOf(trader).call({ from: trader })).toString()); - - await waitForTX( - contract.methods.burn(toHex, amount.toString() /* new BigNumber(amount).multipliedBy(10 ** 8).toFixed() */).send({ from: trader }) - )(dispatch); -}; - -export const withdrawReward = ( - web3: Web3, - ethNetwork: EthNetwork, - trader: string, - darknodeID: string, - token: Token | OldToken, -) => async (dispatch: Dispatch) => new Promise(async (resolve, reject) => { - - const tokenDetails = AllTokenDetails.get(token); - if (tokenDetails === undefined) { - reject(new Error("Unknown token")); - return; - } - - if (tokenDetails.old) { - try { - const contract = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRewardVault.ABI, - getContracts(ethNetwork).DarknodeRewardVault.address - ); - await waitForTX( - contract.methods.withdraw(darknodeID, tokenAddresses(token, ethNetwork)).send({ from: trader }), - resolve, - )(dispatch); - } catch (error) { - reject(error); - return; - } - } else { - const withdraw = async (withdrawAddress?: string) => { - - const darknodePayment: DarknodePaymentWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodePayment.ABI, - getContracts(ethNetwork).DarknodePayment.address - ); - - if (!tokenDetails) { - throw new Error("Unknown token"); - } - - await waitForTX( - darknodePayment.methods.withdraw(darknodeID, tokenAddresses(token, ethNetwork)).send({ from: trader }), - resolve, - )(dispatch); - - if (tokenDetails.wrapped) { - if (!withdrawAddress) { - throw new Error("Invalid withdraw address"); - } - await burn(web3, ethNetwork, trader, token as Token, withdrawAddress)(dispatch); - } - }; - const onCancel = () => { - dispatch(clearPopup()); - reject(); - }; - const onDone = () => { - dispatch(clearPopup()); - resolve(); - }; - if (tokenDetails.wrapped) { - dispatch(setPopup( - { - popup: , - onCancel, - overlay: true, - }, - )); - } else { - try { - await withdraw(); - } catch (error) { - onCancel(); - } - } - } -}); - -export const approveNode = ( - web3: Web3, - ethNetwork: EthNetwork, - trader: string, - bond: BigNumber -) => async (dispatch: Dispatch) => { - // tslint:disable-next-line:no-non-null-assertion - const ercContract = new (web3.eth.Contract)(getContracts(ethNetwork).ERC20.ABI, tokenAddresses(OldToken.REN, ethNetwork)); - const ercBalance = new BigNumber(await ercContract.methods.balanceOf(trader).call()); - const ercAllowance = new BigNumber( - await ercContract.methods.allowance(trader, getContracts(ethNetwork).DarknodeRegistry.address).call(), - ); - - if (ercAllowance.gte(bond)) { - // Already approved - return; - } - - if (ercBalance.lt(bond)) { - throw _noCapture_(new Error("You have insufficient REN to register a darknode.")); - } - - return waitForTX( - ercContract.methods.approve(getContracts(ethNetwork).DarknodeRegistry.address, bond.toFixed()).send({ from: trader }) - )(dispatch); -}; - -export const registerNode = ( - web3: Web3, - ethNetwork: EthNetwork, - trader: string, - darknodeID: string, - publicKey: string, - bond: BigNumber, - onCancel: () => void, - onDone: () => void -) => async (dispatch: Dispatch): Promise => { - - const hardCodedGas = 500000; - - // tslint:disable-next-line:no-non-null-assertion - const ercContract = new (web3.eth.Contract)(getContracts(ethNetwork).ERC20.ABI, tokenAddresses(OldToken.REN, ethNetwork)); - - const ercAllowance = new BigNumber( - await ercContract.methods.allowance(trader, getContracts(ethNetwork).DarknodeRegistry.address).call() - ); - - let gas: number | undefined = hardCodedGas; - if (ercAllowance.gte(bond)) { - gas = undefined; - } - - let resolved = false; - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - - try { - const res = await waitForTX( - darknodeRegistry.methods.register(darknodeID, publicKey, bond.toFixed()).send({ from: trader, gas }), - onDone - )(dispatch); - resolved = true; - return res; - } catch (error) { - if (resolved) { onCancel(); } - throw error; - } -}; - -export const deregisterNode = ( - web3: Web3, - ethNetwork: EthNetwork, - trader: string, - darknodeID: string, - onCancel: () => void, - onDone: () => void -) => async (dispatch: Dispatch): Promise => { - // The node has been registered and can be deregistered. - - let resolved = false; - const darknodeRegistry = new ((web3).eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - try { - const res = await waitForTX( - darknodeRegistry.methods.deregister(darknodeID).send({ from: trader }), - onDone - )(dispatch); - resolved = true; - return res; - } catch (error) { - if (resolved) { onCancel(); } - throw error; - } -}; - -export const refundNode = ( - web3: Web3, - ethNetwork: EthNetwork, - trader: string, - darknodeID: string, - onCancel: () => void, - onDone: () => void -) => async (dispatch: Dispatch): Promise => { - // The node is awaiting refund. - - let resolved = false; - const darknodeRegistry: DarknodeRegistryWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodeRegistry.ABI, - getContracts(ethNetwork).DarknodeRegistry.address - ); - - try { - const res = await waitForTX( - darknodeRegistry.methods.refund(darknodeID).send({ from: trader }), - onDone - )(dispatch); - resolved = true; - return res; - } catch (error) { - if (resolved) { onCancel(); } - throw error; - } -}; - -export const fundNode = ( - web3: Web3, - address: string, - darknodeID: string, - ethAmountStr: string, - onCancel: () => void, - onDone: () => void -) => async (dispatch: Dispatch): Promise => { - // Convert eth to wei - const ethAmount = new BigNumber(ethAmountStr); - const weiAmount = ethAmount.times(new BigNumber(10).exponentiatedBy(18)).decimalPlaces(0); - - let resolved = false; - - const call = () => web3.eth.sendTransaction({ - to: darknodeID, - value: weiAmount.toFixed(), - from: address, - }); - - try { - const res = await waitForTX( - call(), - onDone - )(dispatch); - resolved = true; - return res; - } catch (error) { - if (resolved) { onCancel(); } - throw error; - } -}; - -export const claimForNode = ( - web3: Web3, - ethNetwork: EthNetwork, - useFixedGasLimit: boolean, - address: string, - darknodeID: string, - onCancel: () => void, - onDone: () => void -) => async (dispatch: Dispatch): Promise => { - // Convert eth to wei - - const darknodePayment: DarknodePaymentWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodePayment.ABI, - getContracts(ethNetwork).DarknodePayment.address - ); - - let resolved = false; - - const call = () => darknodePayment.methods.claim(darknodeID).send({ from: address, gas: useFixedGasLimit ? 200000 : undefined }); - - try { - const res = await waitForTX( - call(), - onDone - )(dispatch); - resolved = true; - return res; - } catch (error) { - if (resolved) { onCancel(); } - throw error; - } -}; - -export const changeCycle = ( - web3: Web3, - ethNetwork: EthNetwork, - ignoreError: boolean, - address: string, - onCancel: () => void, - onDone: () => void -) => async (dispatch: Dispatch): Promise => { - // Convert eth to wei - - const darknodePayment: DarknodePaymentWeb3 = new (web3.eth.Contract)( - getContracts(ethNetwork).DarknodePayment.ABI, - getContracts(ethNetwork).DarknodePayment.address - ); - - let resolved = false; - - // Try to call `changeCycle` as a read function to see if it reverts - const cycleTimeoutCall = await darknodePayment.methods.cycleTimeout().call({ from: address }); - if (!cycleTimeoutCall) { - throw _noCapture_(new Error("Unable to change timeout - please try again")); - } - const canCall = new BigNumber(cycleTimeoutCall.toString()); - if (canCall.isEqualTo(0) || !alreadyPast(canCall.toNumber())) { - return ""; - } - - const call = () => darknodePayment.methods.changeCycle().send({ from: address }); - - try { - const res = await waitForTX( - call(), - onDone, - )(dispatch); - resolved = true; - return res; - } catch (error) { - if (ignoreError) { - resolved = true; - return ""; - } - if (resolved) { onCancel(); } - throw error; - } -}; diff --git a/src/store/actions/ui/uiActions.ts b/src/store/actions/ui/uiActions.ts deleted file mode 100644 index cc45d442..00000000 --- a/src/store/actions/ui/uiActions.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createStandardAction } from "typesafe-actions"; - -export const showMobileMenu = createStandardAction("showMobileMenu")(); -export const hideMobileMenu = createStandardAction("hideMobileMenu")(); diff --git a/src/store/applicationState.ts b/src/store/applicationState.ts new file mode 100644 index 00000000..09fcb16f --- /dev/null +++ b/src/store/applicationState.ts @@ -0,0 +1,170 @@ +// tslint:disable:no-object-literal-type-assertion + +import { RenNetwork, RenNetworkDetails, RenNetworks } from "@renproject/contracts"; +import { Currency, Record } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; +import { List, Map, OrderedMap, OrderedSet } from "immutable"; +import { PromiEvent } from "web3-core"; + +import { NodeStatistics } from "../lib/darknode/jsonrpc"; +import { Web3Browser } from "../lib/ethereum/browsers"; +import { DarknodeFeeStatus, RegistrationStatus } from "../lib/ethereum/contractReads"; +import { getReadOnlyWeb3 } from "../lib/ethereum/getWeb3"; +import { OldToken, Token, TokenPrices } from "../lib/ethereum/tokens"; +import { DEFAULT_REN_NETWORK, INFURA_KEY } from "../lib/react/environmentVariables"; +import { _catchBackgroundException_ } from "../lib/react/errors"; +import { Serializable } from "../lib/react/serializable"; + +export interface ApplicationState { + account: AccountState; + popup: PopupState; + network: NetworkState; + ui: UIState; +} + +export const readOnlyWeb3 = getReadOnlyWeb3(`${(RenNetworks[DEFAULT_REN_NETWORK || RenNetwork.Testnet] as RenNetworkDetails).infura}/v3/${INFURA_KEY}`); + +export class AccountState extends Record({ + // Login data + address: null as string | null, + web3BrowserName: Web3Browser.MetaMask, + web3: readOnlyWeb3, + + // The following are almost opposites - except that they are both + // initialized as false. LoggedInBefore means that we try to re-login again + // when the page is loaded. Logged out means that we don't try to re-login. + loggedInBefore: false, + loggedOut: false, + + renNetwork: RenNetworks[DEFAULT_REN_NETWORK || RenNetwork.Testnet] as RenNetworkDetails, +}) implements Serializable { + public serialize(): string { + // const js = this.toJS(); + return JSON.stringify({ + renNetwork: this.renNetwork.name, + loggedInBefore: this.loggedInBefore, + }); + } + + public deserialize(str: string): AccountState { + // let next = this; + try { + const data = JSON.parse(str); + // tslint:disable-next-line: no-any + let accountData = new AccountState(); + if (data.renNetwork) { + accountData = accountData.set("renNetwork", RenNetworks[data.renNetwork]); + } + if (data.loggedInBefore) { + accountData = accountData.set("loggedInBefore", data.loggedInBefore === "true" || data.loggedInBefore); + } + return accountData; + } catch (error) { + _catchBackgroundException_(error, "Error in applicationState > AccountState > deserialize"); + return this; + } + } +} + +export class PopupState extends Record({ + dismissible: true, + onCancel: (() => null) as () => void, + popup: null as JSX.Element | null, + overlay: false, +}) { } + +export class UIState extends Record({ + mobileMenuActive: false, +}) { } + +export class NetworkState extends Record({ + secondsPerBlock: null as number | null, + + tokenPrices: null as TokenPrices | null, + + darknodeCount: null as BigNumber | null, + orderCount: null as BigNumber | null, + + registrySync: { progress: 0, target: 0 }, + + darknodeDetails: Map(), + + balanceHistories: Map>(), + + // tslint:disable-next-line: no-any + transactions: OrderedMap>(), + confirmations: OrderedMap(), + + currentCycle: "", + previousCycle: "", + pendingRewards: OrderedMap>(), + pendingTotalInEth: OrderedMap(), + pendingRewardsInEth: OrderedMap>(), + cycleTimeout: new BigNumber(0), + currentShareCount: new BigNumber(1), + + currentDarknodeCount: null as number | null, + previousDarknodeCount: null as number | null, + nextDarknodeCount: null as number | null, + + /////////////////////////////////////////////////////////// + // If these change, localstorage migration may be needed // + /////////////////////////////////////////////////////////// + quoteCurrency: Currency.USD, + darknodeNames: Map(), + darknodeRegisteringList: Map(), + // Map from operator-address to list of darknodes. + darknodeList: Map>(), + withdrawAddresses: Map>(), + /////////////////////////////////////////////////////// +}) implements Serializable { + public serialize(): string { + const js = this.toJS(); + return JSON.stringify({ + quoteCurrency: js.quoteCurrency, + darknodeList: js.darknodeList, + darknodeNames: js.darknodeNames, + darknodeRegisteringList: js.darknodeRegisteringList, + withdrawAddresses: js.withdrawAddresses, + }); + } + + public deserialize(str: string): NetworkState { + // let next = this; + try { + const data = JSON.parse(str); + return new NetworkState({ + quoteCurrency: data.quoteCurrency, + darknodeList: data.darknodeList, + darknodeNames: data.darknodeNames, + darknodeRegisteringList: data.darknodeRegisteringList, + withdrawAddresses: data.withdrawAddresses, + }); + } catch (error) { + _catchBackgroundException_(error, "Error in applicationState > NetworkState > deserialize"); + return this; + } + } +} + +export class DarknodesState extends Record({ + ID: "", + multiAddress: "", + publicKey: "", + ethBalance: new BigNumber(0), + feesEarned: OrderedMap(), + oldFeesEarned: OrderedMap(), + feesEarnedTotalEth: new BigNumber(0), + + cycleStatus: OrderedMap(), + + averageGasUsage: 0, + lastTopUp: null, + expectedExhaustion: null, + + peers: 0, + registrationStatus: "" as RegistrationStatus, + operator: "", + + nodeStatistics: null as NodeStatistics | null, +}) { } diff --git a/src/store/configureStore.ts b/src/store/configureStore.ts index 5e5e14f0..609f1825 100644 --- a/src/store/configureStore.ts +++ b/src/store/configureStore.ts @@ -1,22 +1,23 @@ import { Action, applyMiddleware, createStore, Middleware, Reducer } from "redux"; -import { PersistConfig, PersistPartial, persistReducer, persistStore } from "redux-persist"; +import { PersistConfig, persistReducer, persistStore } from "redux-persist"; +import { PersistPartial } from "redux-persist/lib/persistReducer"; import thunk from "redux-thunk"; -import { environment } from "../lib/environmentVariables"; +import { NODE_ENV } from "../lib/react/environmentVariables"; import { persistConfig } from "./persistConfig"; -import { rootReducer } from "./reducers/rootReducer"; +import { rootReducer } from "./rootReducer"; const middlewares: Middleware[] = [ thunk, ]; // Log Redux actions (only in development) -if (environment === "local") { +if (NODE_ENV === "development") { // middlewares.push(createLogger({ collapsed: true })); } // Workaround createStore not liking type of persistReducer -const typedPersistReducer = (config: PersistConfig, reducer: Reducer): +const typedPersistReducer = (config: PersistConfig, reducer: Reducer): Reducer => { return persistReducer( config, @@ -26,10 +27,7 @@ const typedPersistReducer = (config: PersistConfig, reducer const persistedReducer = typedPersistReducer(persistConfig, rootReducer); -export const configureStore = () => { - const store = createStore(persistedReducer, - applyMiddleware(...middlewares), - ); - const persistor = persistStore(store); - return { store, persistor }; -}; +export const store = createStore(persistedReducer, + applyMiddleware(...middlewares), +); +export const persistor = persistStore(store); diff --git a/src/store/network/networkActions.ts b/src/store/network/networkActions.ts new file mode 100644 index 00000000..deca2058 --- /dev/null +++ b/src/store/network/networkActions.ts @@ -0,0 +1,26 @@ +import {} from "redux"; + +import BigNumber from "bignumber.js"; +import { OrderedMap } from "immutable"; +import { createAction } from "typesafe-actions"; + +import { DarknodeCounts } from "../../lib/ethereum/contractReads"; +import { getPrices, Token, TokenPrices } from "../../lib/ethereum/tokens"; +import { AppDispatch } from "../rootReducer"; + +export const storeTokenPrices = createAction("STORE_TOKEN_PRICES")(); + +export const updateCurrentCycle = createAction("UPDATE_CURRENT_CYCLE")(); +export const updatePreviousCycle = createAction("UPDATE_PREVIOUS_CYCLE")(); + +export const updatePendingRewards = createAction("UPDATE_PENDING_REWARDS")>>(); +export const updatePendingTotalInEth = createAction("UPDATE_PENDING_TOTAL_IN_ETH")>(); +export const updatePendingRewardsInEth = createAction("UPDATE_PENDING_REWARDS_IN_ETH")>>(); +export const updateCycleTimeout = createAction("UPDATE_CYCLE_TIMEOUT")(); +export const updateCurrentShareCount = createAction("UPDATE_CURRENT_SHARE_COUNT")(); +export const updateDarknodeCounts = createAction("UPDATE_DARKNODE_COUNTS")(); + +export const updateTokenPrices = () => async (dispatch: AppDispatch) => { + const tokenPrices = await getPrices(); + dispatch(storeTokenPrices(tokenPrices)); +}; diff --git a/src/store/reducers/statistics/statisticsReducer.ts b/src/store/network/networkReducer.ts similarity index 71% rename from src/store/reducers/statistics/statisticsReducer.ts rename to src/store/network/networkReducer.ts index 7d1b7429..c32fc4c3 100644 --- a/src/store/reducers/statistics/statisticsReducer.ts +++ b/src/store/network/networkReducer.ts @@ -1,19 +1,18 @@ -import { List } from "immutable"; +import { List, OrderedSet } from "immutable"; import { ActionType, getType } from "typesafe-actions"; -import * as networkActions from "../../actions/statistics/networkActions"; -import * as operatorActions from "../../actions/statistics/operatorActions"; - -import { _captureInteractionException_ } from "../../../lib/errors"; -import { StatisticsData } from "../../types"; +import { _catchInteractionException_ } from "../../lib/react/errors"; +import { NetworkState } from "../applicationState"; +import * as networkActions from "./networkActions"; +import * as operatorActions from "./operatorActions"; type NetworkAction = ActionType; type OperatorActions = ActionType; -export const statisticsReducer = ( - state: StatisticsData = new StatisticsData(), +export const networkReducer = ( + state: NetworkState = new NetworkState(), action: NetworkAction | OperatorActions -): StatisticsData => { +): NetworkState => { switch (action.type) { case getType(networkActions.updateCurrentCycle): return state.set("currentCycle", action.payload); @@ -27,11 +26,20 @@ export const statisticsReducer = ( case getType(networkActions.updatePendingTotalInEth): return state.set("pendingTotalInEth", action.payload); + case getType(networkActions.updatePendingRewardsInEth): + return state.set("pendingRewardsInEth", action.payload); + case getType(networkActions.updateCycleTimeout): return state.set("cycleTimeout", action.payload); - case getType(networkActions.storeMinimumBond): - return state.set("minimumBond", action.payload); + case getType(networkActions.updateCurrentShareCount): + return state.set("currentShareCount", action.payload); + + case getType(networkActions.updateDarknodeCounts): + return state + .set("currentDarknodeCount", action.payload.currentDarknodeCount) + .set("previousDarknodeCount", action.payload.previousDarknodeCount) + .set("nextDarknodeCount", action.payload.nextDarknodeCount); case getType(networkActions.storeTokenPrices): return state.set("tokenPrices", action.payload); @@ -49,7 +57,7 @@ export const statisticsReducer = ( case getType(operatorActions.removeDarknode): try { - let operatorList = state.darknodeList.get(action.payload.operator); + let operatorList = state.darknodeList.getIn([action.payload.operator, action.payload.network], null) as OrderedSet | null; if (!operatorList) { return state; } @@ -58,33 +66,22 @@ export const statisticsReducer = ( return state.set("darknodeList", state.darknodeList.set(action.payload.operator, operatorList)); } catch (error) { - _captureInteractionException_(error, { - description: "Error throw in removeDarknode reducer", - shownToUser: "No", - }); + _catchInteractionException_(error, "Error in networkReducer > removeDarknode"); return state; } - case getType(operatorActions.storeDarknodeList): - let newList = state.darknodeList.get(action.payload.address) || List(); - let newNames = state.darknodeNames; + case getType(operatorActions.addDarknodes): + const { address, network, darknodes } = action.payload; - // Add to list if it's not already in there (this is an inefficient - // process but it's only run on a small number of strings every two minutes) - action.payload.darknodeList.map((darknodeID: string) => { - if (!newList.contains(darknodeID)) { - newList = newList.push(darknodeID); + let newList = state.darknodeList.getIn([address, network], OrderedSet()) as OrderedSet; + let newNames = state.darknodeNames; - // if (!newNames.has(darknodeID)) { - // newNames = newNames.set(darknodeID, `Darknode ${newList.indexOf(darknodeID) + 1}`); - // } - } - return null; - }); + // Add to list if it's not already in there + newList = darknodes.merge(darknodes); newList.map((darknodeID: string) => { if (!newNames.has(darknodeID)) { - newNames = newNames.set(darknodeID, `Darknode ${newList.indexOf(darknodeID) + 1}`); + newNames = newNames.set(darknodeID, `Darknode ${newList.toList().indexOf(darknodeID) + 1}`); } return null; }); @@ -93,10 +90,14 @@ export const statisticsReducer = ( .filter((_: string, darknodeID: string) => !newList.contains(darknodeID)); return state - .set("darknodeList", state.darknodeList.set(action.payload.address, newList)) + .set("darknodeList", state.darknodeList.set(address, newList)) .set("darknodeNames", newNames) .set("darknodeRegisteringList", darknodeRegisteringList); + case getType(operatorActions.setEmptyDarknodeList): + return state + .set("darknodeList", state.darknodeList.set(action.payload.address, OrderedSet())); + case getType(operatorActions.storeQuoteCurrency): return state.set("quoteCurrency", action.payload.quoteCurrency); @@ -125,7 +126,7 @@ export const statisticsReducer = ( case getType(operatorActions.removeFromWithdrawAddresses): const list = state.withdrawAddresses.get(action.payload.token); if (!list) { return state; } - const foundIndex = list.findIndex((address) => address === action.payload.address); + const foundIndex = list.findIndex((addr) => addr === action.payload.address); if (foundIndex === -1) { return state; } return state.set( "withdrawAddresses", @@ -142,6 +143,9 @@ export const statisticsReducer = ( action.payload.darknodeDetails, )); + case getType(operatorActions.storeRegistrySync): + return state.set("registrySync", action.payload); + case getType(operatorActions.addTransaction): return state.set("transactions", state.transactions.set(action.payload.txHash, action.payload.tx)); diff --git a/src/store/network/operatorActions.ts b/src/store/network/operatorActions.ts new file mode 100644 index 00000000..279d0fb8 --- /dev/null +++ b/src/store/network/operatorActions.ts @@ -0,0 +1,199 @@ +import { RenNetworkDetails } from "@renproject/contracts"; +import { Currency } from "@renproject/react-components"; +import BigNumber from "bignumber.js"; +import { OrderedMap, OrderedSet } from "immutable"; +import { createAction } from "typesafe-actions"; +import Web3 from "web3"; +import { PromiEvent } from "web3-core"; + +import { + calculateSecondsPerBlock, fetchCycleAndPendingRewards, fetchDarknodeBalanceHistory, + fetchDarknodeDetails, getDarknodeCounts, getOperatorDarknodes, HistoryPeriod, NULL, + RegistrationStatus, +} from "../../lib/ethereum/contractReads"; +import { Token, TokenPrices } from "../../lib/ethereum/tokens"; +import { ApplicationState, DarknodesState } from "../applicationState"; +import { AppDispatch } from "../rootReducer"; +import { + updateCurrentCycle, updateCurrentShareCount, updateCycleTimeout, updateDarknodeCounts, + updatePendingRewards, updatePendingRewardsInEth, updatePendingTotalInEth, updatePreviousCycle, +} from "./networkActions"; + +export const addRegisteringDarknode = createAction("ADD_REGISTERING_DARKNODE")<{ + darknodeID: string; + publicKey: string; +}>(); + +export const removeRegisteringDarknode = createAction("REMOVE_REGISTERING_DARKNODE")<{ + darknodeID: string; +}>(); + +export const removeDarknode = createAction("REMOVE_DARKNODE")<{ + darknodeID: string; + operator: string; + network: string; +}>(); + +export const addDarknodes = createAction("ADD_DARKNODE")<{ + darknodes: OrderedSet; + address: string; + network: string; +}>(); + +export const setEmptyDarknodeList = createAction("SET_EMPTY_DARKNODE_LIST")<{ + address: string; + network: string; +}>(); + +export const storeQuoteCurrency = createAction("STORE_QUOTE_CURRENCY")<{ quoteCurrency: Currency }>(); + +export const storeRegistrySync = createAction("STORE_REGISTRY_SYNC")<{ progress: number, target: number }>(); + +export const storeSecondsPerBlock = createAction("STORE_SECONDS_PER_BLOCK")<{ secondsPerBlock: number }>(); + +export const addToWithdrawAddresses = createAction("ADD_TO_WITHDRAW_ADDRESSES")<{ token: Token, address: string }>(); +export const removeFromWithdrawAddresses = createAction("REMOVE_FROM_WITHDRAW_ADDRESSES")<{ token: Token, address: string }>(); + +export const setDarknodeDetails = createAction("SET_DARKNODE_DETAILS")<{ + darknodeDetails: DarknodesState; +}>(); + +export const updateDarknodeHistory = createAction("UPDATE_DARKNODE_HISTORY")<{ + darknodeID: string; + balanceHistory: OrderedMap; +}>(); + +export const setDarknodeName = createAction("SET_DARKNODE_NAME")<{ darknodeID: string; name: string }>(); + +// tslint:disable-next-line: no-any +export const addTransaction = createAction("ADD_TRANSACTION")<{ txHash: string; tx: PromiEvent }>(); +export const setTxConfirmations = createAction("SET_TX_CONFIRMATIONS")<{ txHash: string; confirmations: number }>(); + +export const updateSecondsPerBlock = ( + web3: Web3, +) => async (dispatch: AppDispatch) => { + const secondsPerBlock = await calculateSecondsPerBlock(web3); + if (secondsPerBlock !== null) { + dispatch(storeSecondsPerBlock({ secondsPerBlock })); + } +}; + +export const updateCycleAndPendingRewards = ( + web3: Web3, + renNetwork: RenNetworkDetails, + tokenPrices: TokenPrices | null, +) => async (dispatch: AppDispatch) => { + const getDarknodeCountsPromise = getDarknodeCounts(web3, renNetwork); + const fetchCycleAndPendingRewardsPromise = fetchCycleAndPendingRewards(web3, renNetwork, tokenPrices); + + try { + const darknodeCounts = await getDarknodeCountsPromise; + dispatch(updateDarknodeCounts(darknodeCounts)); + } catch (error) { + // Ignore error + } + + const { + pendingRewards, + currentCycle, + previousCycle, + cycleTimeout, + pendingTotalInEth, + pendingRewardsInEth, + currentShareCount, + } = await fetchCycleAndPendingRewardsPromise; + + if (pendingRewardsInEth !== null) { + dispatch(updatePendingRewardsInEth(pendingRewardsInEth)); + } + if (pendingTotalInEth !== null) { + dispatch(updatePendingTotalInEth(pendingTotalInEth)); + } + if (currentCycle !== null && currentCycle !== undefined) { + dispatch(updateCurrentCycle(currentCycle.toString())); + } + if (previousCycle !== null && previousCycle !== undefined) { + dispatch(updatePreviousCycle(previousCycle.toString())); + } + dispatch(updatePendingRewards(pendingRewards)); + if (cycleTimeout !== null) { + dispatch(updateCycleTimeout(cycleTimeout)); + } + if (currentShareCount !== null) { + dispatch(updateCurrentShareCount(currentShareCount)); + } +}; + +export const updateDarknodeDetails = ( + web3: Web3, + renNetwork: RenNetworkDetails, + darknodeID: string, + tokenPrices: TokenPrices | null, +) => async (dispatch: AppDispatch) => { + const darknodeDetails = await fetchDarknodeDetails(web3, renNetwork, darknodeID, tokenPrices); + dispatch(setDarknodeDetails({ darknodeDetails })); +}; + +export const updateOperatorDarknodes = ( + web3: Web3, + renNetwork: RenNetworkDetails, + address: string, + tokenPrices: TokenPrices | null, + previousDarknodeList: OrderedSet | null, +) => async (dispatch: AppDispatch, getState: () => ApplicationState) => { + // await dispatch(updateCycleAndPendingRewards(web3, renNetwork, tokenPrices)); + + let darknodeList = previousDarknodeList || OrderedSet(); + + const currentDarknodes = await getOperatorDarknodes(web3, renNetwork, address, (progress, target) => { + if (previousDarknodeList === null) { + dispatch(storeRegistrySync({ progress, target })); + } + }); /* , (darknodeID) => { + dispatch(addDarknode({ darknodeID, address, network: renNetwork.name })); + }, ); */ + + dispatch(addDarknodes({ darknodes: currentDarknodes, address, network: renNetwork.name })); + + // The lists are merged in the reducer as well, but we combine them again + // before passing into `updateDarknodeDetails` + currentDarknodes.map((darknodeID: string) => { + if (!darknodeList.contains(darknodeID)) { + darknodeList = darknodeList.add(darknodeID); + } + return null; + }); + + await Promise.all(darknodeList.toList().map(async (darknodeID: string) => { + return dispatch(updateDarknodeDetails(web3, renNetwork, darknodeID, tokenPrices)); + }).toArray()); + + const { darknodeDetails } = getState().network; + + await Promise.all(darknodeList.toList().map(async (darknodeID: string) => { + const details = darknodeDetails.get(darknodeID); + if (details && details.registrationStatus === RegistrationStatus.Registered && details.operator.toLowerCase() !== NULL.toLowerCase()) { + if (details.operator.toLowerCase() === address.toLowerCase()) { + // return dispatch(addDarknode({ darknodeID, address, network: renNetwork.name })); + } else { + return dispatch(removeRegisteringDarknode({ darknodeID })); + } + } + return; + }).toArray()); + + if (darknodeList.size === 0) { + dispatch(setEmptyDarknodeList({ address, network: renNetwork.name })); + } +}; + +export const updateDarknodeBalanceHistory = ( + web3: Web3, + darknodeID: string, + previousHistory: OrderedMap | null, + historyPeriod: HistoryPeriod, + secondsPerBlock: number, +) => async (dispatch: AppDispatch) => { + const balanceHistory = await fetchDarknodeBalanceHistory(web3, darknodeID, previousHistory, historyPeriod, secondsPerBlock); + dispatch(updateDarknodeHistory({ darknodeID, balanceHistory })); +}; diff --git a/src/store/persistConfig.ts b/src/store/persistConfig.ts index a5212687..3f414ad2 100644 --- a/src/store/persistConfig.ts +++ b/src/store/persistConfig.ts @@ -1,40 +1,64 @@ -import storage from "redux-persist/lib/storage"; +// tslint:disable: no-console import { createTransform, PersistConfig } from "redux-persist"; +import storage from "redux-persist/lib/storage"; -import { _captureBackgroundException_ } from "../lib/errors"; -import { - ApplicationData, - StatisticsData -} from "./types"; +import { _catchBackgroundException_ } from "../lib/react/errors"; +import { AccountState, ApplicationState, NetworkState } from "./applicationState"; // Local Storage: -const statisticsTransform = createTransform( - (inboundState: StatisticsData, key: string): string => { +const accountTransform = createTransform( + (inboundState: AccountState, key: string | number | symbol): string => { + try { + return inboundState.serialize(); + } catch (error) { + console.error(`Error serializing ${String(key)} in AccountState (${JSON.stringify(inboundState)}): ${error}`); + // Don't send storage because it may contain sensitive data. + _catchBackgroundException_(error, "Error in persistConfig > serializing account storage"); + throw error; + } + }, + (outboundState: string, key: string | number | symbol): AccountState => { + try { + return new AccountState().deserialize(outboundState); + } catch (error) { + console.error(`Error deserializing ${String(key)} in AccountState (${JSON.stringify(outboundState)}): ${error}`); + // Don't send storage because it may contain sensitive data. + _catchBackgroundException_(error, "Error in persistConfig > deserializing account storage"); + throw error; + } + }, + { whitelist: ["account"] as Array, }, +); + +const networkTransform = createTransform( + (inboundState: NetworkState, key: string | number | symbol): string => { try { return inboundState.serialize(); } catch (error) { - console.error(`Error serializing ${key} (${JSON.stringify(inboundState)}): ${error}`); - _captureBackgroundException_(error, { description: "Error serializing local storage" }); + console.error(`Error serializing ${String(key)} in NetworkState (${JSON.stringify(inboundState)}): ${error}`); + // Don't send storage because it may contain sensitive data. + _catchBackgroundException_(error, "Error in persistConfig > serializing network storage"); throw error; } }, - (outboundState: string, key: string): StatisticsData => { + (outboundState: string, key: string | number | symbol): NetworkState => { try { - return new StatisticsData().deserialize(outboundState); + return new NetworkState().deserialize(outboundState); } catch (error) { - console.error(`Error deserializing ${key} (${JSON.stringify(outboundState)}): ${error}`); - _captureBackgroundException_(error, { description: "Error deserializing local storage" }); + console.error(`Error deserializing ${String(key)} in NetworkState (${JSON.stringify(outboundState)}): ${error}`); + // Don't send storage because it may contain sensitive data. + _catchBackgroundException_(error, "Error in persistConfig > deserializing network storage"); throw error; } }, - { whitelist: ["statistics"] as Array, }, + { whitelist: ["network"] as Array, }, ); -export const persistConfig: PersistConfig = { +export const persistConfig: PersistConfig = { storage, key: "root", - whitelist: ["statistics"] as Array, - transforms: [statisticsTransform], + whitelist: ["account", "network"] as Array, + transforms: [accountTransform, networkTransform], }; diff --git a/src/store/popup/popupActions.ts b/src/store/popup/popupActions.ts new file mode 100644 index 00000000..9023be22 --- /dev/null +++ b/src/store/popup/popupActions.ts @@ -0,0 +1,10 @@ +import { createAction } from "typesafe-actions"; + +export const setPopup = createAction("SET_POPUP")<{ + popup: JSX.Element; + overlay?: boolean; + dismissible?: boolean; + onCancel(): void; +}>(); + +export const clearPopup = createAction("CLEAR_POPUP")(); diff --git a/src/store/reducers/popup/popupReducer.ts b/src/store/popup/popupReducer.ts similarity index 83% rename from src/store/reducers/popup/popupReducer.ts rename to src/store/popup/popupReducer.ts index ef6d5e4d..c0d7fffc 100644 --- a/src/store/reducers/popup/popupReducer.ts +++ b/src/store/popup/popupReducer.ts @@ -1,12 +1,11 @@ import { ActionType, getType } from "typesafe-actions"; -import * as popupActions from "../../actions/popup/popupActions"; - -import { PopupData } from "../../types"; +import { PopupState } from "../applicationState"; +import * as popupActions from "./popupActions"; type PopupAction = ActionType; -export const popupReducer = (state: PopupData = new PopupData(), action: PopupAction): PopupData => { +export const popupReducer = (state: PopupState = new PopupState(), action: PopupAction): PopupState => { switch (action.type) { case getType(popupActions.setPopup): if (document.documentElement) { diff --git a/src/store/reducers/rootReducer.ts b/src/store/reducers/rootReducer.ts deleted file mode 100644 index 62bd29e2..00000000 --- a/src/store/reducers/rootReducer.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { combineReducers } from "redux"; - -import { popupReducer } from "./popup/popupReducer"; -import { statisticsReducer } from "./statistics/statisticsReducer"; -import { traderReducer } from "./trader/traderReducer"; -import { uiReducer } from "./ui/uiReducer"; - -import { ApplicationData } from "../types"; - -export const rootReducer = combineReducers({ - popup: popupReducer, - trader: traderReducer, - statistics: statisticsReducer, - ui: uiReducer, -}); diff --git a/src/store/reducers/trader/traderReducer.ts b/src/store/reducers/trader/traderReducer.ts deleted file mode 100644 index 0f464d11..00000000 --- a/src/store/reducers/trader/traderReducer.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ActionType, getType } from "typesafe-actions"; - -import * as accountActions from "../../actions/trader/accountActions"; - -import { TraderData } from "../../types"; - -type AccountAction = ActionType; - -export const traderReducer = (state: TraderData = new TraderData(), action: AccountAction): TraderData => { - switch (action.type) { - case getType(accountActions.storeAddress): - return state.set("address", action.payload); - - case getType(accountActions.storeWeb3): - return state.set("web3", action.payload); - - case getType(accountActions.storeWeb3BrowserName): - return state.set("web3BrowserName", action.payload); - - case getType(accountActions.storeEthNetwork): - return state.set("ethNetwork", action.payload); - - default: - return state; - } -}; diff --git a/src/store/rootReducer.ts b/src/store/rootReducer.ts new file mode 100644 index 00000000..65b67abf --- /dev/null +++ b/src/store/rootReducer.ts @@ -0,0 +1,19 @@ +import { Action, combineReducers } from "redux"; +import { ThunkDispatch } from "redux-thunk"; + +import { accountReducer } from "./account/accountReducer"; +import { ApplicationState } from "./applicationState"; +import { networkReducer } from "./network/networkReducer"; +import { popupReducer } from "./popup/popupReducer"; +import { uiReducer } from "./ui/uiReducer"; + +export const rootReducer = combineReducers({ + popup: popupReducer, + account: accountReducer, + network: networkReducer, + ui: uiReducer, +}); + +interface AppAction extends Action { +} +export type AppDispatch = ThunkDispatch; diff --git a/src/store/types.ts b/src/store/types.ts deleted file mode 100644 index af6fc774..00000000 --- a/src/store/types.ts +++ /dev/null @@ -1,183 +0,0 @@ -// tslint:disable:no-object-literal-type-assertion - -import BigNumber from "bignumber.js"; - -import { List, Map, OrderedMap } from "immutable"; -import { PromiEvent } from "web3-core"; - -import { _captureBackgroundException_ } from "../lib/errors"; -import { Web3Browser } from "../lib/ethereum/browsers"; -import { OldToken, Token } from "../lib/ethereum/tokens"; -import { getReadOnlyWeb3 } from "../lib/ethereum/wallet"; -import { Record } from "../lib/record"; -import { RegistrationStatus } from "./actions/statistics/operatorActions"; - -export enum Network { - Staging = "staging", - Production = "production", -} - -export enum EthNetwork { - Kovan = "kovan", - Mainnet = "main", -} - -const EthNetworkLabel = { - [EthNetwork.Kovan]: "Kovan", - [EthNetwork.Mainnet]: "Mainnet", -}; -export const getNetworkLabel = (ethNetwork: EthNetwork | undefined) => ethNetwork ? EthNetworkLabel[ethNetwork] || ethNetwork : ethNetwork; - -interface Serializable { - serialize(): string; - deserialize(str: string): T; -} - -export interface ApplicationData { - trader: TraderData; - popup: PopupData; - statistics: StatisticsData; - ui: UIData; -} - -export const readOnlyWeb3 = getReadOnlyWeb3(); - -export class TraderData extends Record({ - // Login data - address: null as string | null, - web3BrowserName: Web3Browser.MetaMask, - web3: readOnlyWeb3, - - ethNetwork: EthNetwork.Mainnet, -}) { } - -export enum LabelLevel { - Info = "info", - Warning = "warning" -} - -export class PopupData extends Record({ - dismissible: true, - onCancel: (() => null) as () => void, - popup: null as JSX.Element | null, - overlay: false, -}) { } - -export class UIData extends Record({ - mobileMenuActive: false, -}) { } - -export enum Currency { - AUD = "aud", - CNY = "cny", - GBP = "gbp", - EUR = "eur", - JPY = "jpy", - KRW = "krw", - USD = "usd", - - ETH = "eth", - BTC = "btc", -} - -export const currencies = [ - { currency: Currency.AUD, description: "Australian Dollar (AUD)", }, - { currency: Currency.GBP, description: "British Pound (GBP)", }, - { currency: Currency.CNY, description: "Chinese Yuan (CNY)", }, - { currency: Currency.EUR, description: "Euro (EUR)", }, - { currency: Currency.JPY, description: "Japanese Yen (JPY)", }, - { currency: Currency.KRW, description: "Korean Won (KRW)", }, - { currency: Currency.USD, description: "US Dollar (USD)", }, - - { currency: Currency.ETH, description: "Ethereum (ETH)", }, - { currency: Currency.BTC, description: "Bitcoin (BTC)", }, -]; - -export type TokenPrices = Map>; - -export class StatisticsData extends Record({ - minimumBond: null as BigNumber | null, - secondsPerBlock: null as number | null, - - tokenPrices: null as TokenPrices | null, - quoteCurrency: Currency.USD, - - darknodeCount: null as BigNumber | null, - orderCount: null as BigNumber | null, - - darknodeDetails: Map(), - - balanceHistories: Map>(), - - darknodeNames: Map(), - darknodeRegisteringList: Map(), - darknodeList: Map>(), - - // tslint:disable-next-line: no-any - transactions: OrderedMap>(), - confirmations: OrderedMap(), - - withdrawAddresses: Map>(), - - currentCycle: "", - previousCycle: "", - pendingRewards: OrderedMap>(), - pendingTotalInEth: OrderedMap(), - cycleTimeout: new BigNumber(0), -}) implements Serializable { - public serialize(): string { - const js = this.toJS(); - return JSON.stringify({ - darknodeList: js.darknodeList, - darknodeNames: js.darknodeNames, - darknodeRegisteringList: js.darknodeRegisteringList, - withdrawAddresses: js.withdrawAddresses, - }); - } - - public deserialize(str: string): StatisticsData { - // let next = this; - try { - const data = JSON.parse(str); - // next = next.set("address", data.address); - return new StatisticsData({ - darknodeList: data.darknodeList, - darknodeNames: data.darknodeNames, - darknodeRegisteringList: data.darknodeRegisteringList, - withdrawAddresses: data.withdrawAddresses, - }); - } catch (error) { - _captureBackgroundException_(error, { - description: "Cannot deserialize local storage", - }); - return this; - } - } -} - -export enum DarknodeFeeStatus { - BLACKLISTED = "BLACKLISTED", - CLAIMED = "CLAIMED", - NOT_CLAIMED = "NOT_CLAIMED", - NOT_WHITELISTED = "NOT_WHITELISTED", -} - -export class DarknodeDetails extends Record({ - ID: "", - multiAddress: "", - publicKey: "", - ethBalance: new BigNumber(0), - feesEarned: OrderedMap(), - oldFeesEarned: OrderedMap(), - feesEarnedTotalEth: new BigNumber(0), - - cycleStatus: OrderedMap(), - - averageGasUsage: 0, - lastTopUp: null, - expectedExhaustion: null, - - peers: 0, - registrationStatus: "" as RegistrationStatus, - operator: "", -}) { } diff --git a/src/store/ui/uiActions.ts b/src/store/ui/uiActions.ts new file mode 100644 index 00000000..0001bf62 --- /dev/null +++ b/src/store/ui/uiActions.ts @@ -0,0 +1,4 @@ +import { createAction } from "typesafe-actions"; + +export const showMobileMenu = createAction("SHOW_MOBILE_MENU")(); +export const hideMobileMenu = createAction("HIDE_MOBILE_MENU")(); diff --git a/src/store/reducers/ui/uiReducer.ts b/src/store/ui/uiReducer.ts similarity index 68% rename from src/store/reducers/ui/uiReducer.ts rename to src/store/ui/uiReducer.ts index 5940dce0..c76e1bde 100644 --- a/src/store/reducers/ui/uiReducer.ts +++ b/src/store/ui/uiReducer.ts @@ -1,12 +1,11 @@ import { ActionType, getType } from "typesafe-actions"; -import * as uiActions from "../../actions/ui/uiActions"; - -import { UIData } from "../../types"; +import { UIState } from "../applicationState"; +import * as uiActions from "./uiActions"; type UIAction = ActionType; -export const uiReducer = (state: UIData = new UIData(), action: UIAction): UIData => { +export const uiReducer = (state: UIState = new UIState(), action: UIAction): UIState => { switch (action.type) { case getType(uiActions.showMobileMenu): return state.set("mobileMenuActive", true); diff --git a/src/styles/images/Icon-HyperDrive.svg b/src/styles/images/Icon-HyperDrive.svg new file mode 100644 index 00000000..10fc18d5 --- /dev/null +++ b/src/styles/images/Icon-HyperDrive.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/styles/images/Icon-Overview.svg b/src/styles/images/Icon-Overview.svg new file mode 100644 index 00000000..8090804d --- /dev/null +++ b/src/styles/images/Icon-Overview.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/styles/images/exit-black.svg b/src/styles/images/exit-black.svg new file mode 100644 index 00000000..ca8e5547 --- /dev/null +++ b/src/styles/images/exit-black.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/styles/images/exit.svg b/src/styles/images/exit.svg new file mode 100644 index 00000000..c87c9156 --- /dev/null +++ b/src/styles/images/exit.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/styles/images/help.svg b/src/styles/images/help.svg new file mode 100644 index 00000000..bafb11d5 --- /dev/null +++ b/src/styles/images/help.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/styles/images/icon-rewards.svg b/src/styles/images/icon-rewards.svg new file mode 100644 index 00000000..9cafefbe --- /dev/null +++ b/src/styles/images/icon-rewards.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/search.svg b/src/styles/images/search.svg new file mode 100644 index 00000000..75187963 --- /dev/null +++ b/src/styles/images/search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/images/sidebar-empty.svg b/src/styles/images/sidebar-empty.svg new file mode 100644 index 00000000..d30b0506 --- /dev/null +++ b/src/styles/images/sidebar-empty.svg @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/src/styles/images/tokens/btc.svg b/src/styles/images/tokens/btc.svg deleted file mode 100644 index 18c15b3a..00000000 --- a/src/styles/images/tokens/btc.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/styles/images/tokens/dgx.svg b/src/styles/images/tokens/dgx.svg deleted file mode 100644 index 75b83ceb..00000000 --- a/src/styles/images/tokens/dgx.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/src/styles/images/tokens/eth.svg b/src/styles/images/tokens/eth.svg deleted file mode 100644 index e4bd7842..00000000 --- a/src/styles/images/tokens/eth.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/styles/images/tokens/omg.svg b/src/styles/images/tokens/omg.svg deleted file mode 100644 index bd8d6614..00000000 --- a/src/styles/images/tokens/omg.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/styles/images/tokens/ren.svg b/src/styles/images/tokens/ren.svg deleted file mode 100644 index 848fd37f..00000000 --- a/src/styles/images/tokens/ren.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/src/styles/images/tokens/tusd.svg b/src/styles/images/tokens/tusd.svg deleted file mode 100644 index 749be088..00000000 --- a/src/styles/images/tokens/tusd.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/styles/images/tokens/zrx.svg b/src/styles/images/tokens/zrx.svg deleted file mode 100644 index a0acc43a..00000000 --- a/src/styles/images/tokens/zrx.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/styles/images/wallet.svg b/src/styles/images/wallet.svg new file mode 100644 index 00000000..4fea089d --- /dev/null +++ b/src/styles/images/wallet.svg @@ -0,0 +1,14 @@ + + + + icon-wallet + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/styles/index.scss b/src/styles/index.scss index 4a77184a..1514a316 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -1,4 +1,4 @@ -@import "~@renex/fonts/fonts"; +@import "~@renproject/fonts/fonts"; @import 'scss/variables'; @import 'scss/animations'; @@ -9,6 +9,8 @@ @import 'scss/button'; @import 'scss/console'; @import 'scss/darknodeList'; +@import 'scss/errorBoundary'; +@import 'scss/footer'; @import 'scss/header'; @import 'scss/heading'; @import 'scss/home'; @@ -20,8 +22,14 @@ @import 'scss/popup'; @import 'scss/section'; @import 'scss/sidebar'; +@import 'scss/stat'; @import 'scss/statuspage'; @import 'scss/view'; +// Styles in src/components +@import '../components/overviewPage/darknodeMap/darknodeMap'; +@import '../components/renvmPage/renvm'; +@import '../components/overviewPage/overview'; + // Styles for html, body, anchors etc. should go in _general @import 'scss/_general'; \ No newline at end of file diff --git a/src/styles/scss/__general.scss b/src/styles/scss/__general.scss index 3dab1c8b..305f14a5 100644 --- a/src/styles/scss/__general.scss +++ b/src/styles/scss/__general.scss @@ -17,17 +17,21 @@ html { width: 100%; overflow: hidden; } + + min-height: 100%; + background: linear-gradient(180deg, #00162f 0%, #001b39 100%); + background-attachment: fixed; } * { - font-family: 'PingFang SC', Helvetica, Arial, sans-serif; + font-family: "SuisseIntl", Helvetica, Arial, sans-serif; } body { font-size: 12px; margin: 0; - background: $blue-darker; color: white; + margin-bottom: 60px !important; } h1 { @@ -57,9 +61,9 @@ label { display: block; } -input[type=number], -input[type=text], -input[type=password] { +input[type="number"], +input[type="text"], +input[type="password"] { border: 1px solid $light-grey; height: 35px; padding: 0 8px; @@ -73,7 +77,7 @@ input[type=password] { } } -input[type=checkbox] { +input[type="checkbox"] { margin: 0 5px 0 0; vertical-align: middle; } @@ -182,18 +186,36 @@ table th { text-align: right; } +$spacing: 90px; + .container { - $spacing: 80px; width: 100%; max-width: 1400px + $spacing * 2; margin: 0 auto; padding: 0 $spacing; - @media(max-width: $max-sm) { - padding: 0; + @media (max-width: $max-xl) { + padding-right: 10px; + padding-left: $spacing + 10px; + } + + @media (max-width: $max-md) { + padding: 0 10px; } } +// .without-account .container { +// padding: 0 $spacing+10px; + +// @media (max-width: $max-xl) { +// padding-right: 0 $spacing+10px; +// } + +// @media (max-width: $max-md) { +// padding: 0 10px; +// } +// } + .section { padding: 60px 0; } @@ -207,7 +229,7 @@ table th { } .monospace { - font-family: 'Courier New', Courier, monospace; + font-family: "Courier New", Courier, monospace; letter-spacing: 0.5px; } @@ -230,7 +252,7 @@ label { text-overflow: ellipsis; max-width: 250px; - @media(min-width: $min-sm) { + @media (min-width: $min-sm) { max-width: none; } } @@ -267,7 +289,6 @@ label { text-decoration: none; } - .checkbox { appearance: initial; width: 20px; @@ -282,7 +303,6 @@ label { .checkbox:checked:after { content: "✔"; color: $green; - position: absolute; left: 50%; top: 50%; @@ -299,38 +319,53 @@ label { .no-scrollbar { overflow: -moz-scrollbars-none; + scrollbar-width: none; &::-webkit-scrollbar { /* remove scrollbar space */ + display: none; width: 0px; height: 0px; } } .app--body { - margin-top: 120px; + margin-top: 100px; + margin-bottom: 60px; } .mobile-only { - @media(min-width: $min-md) { + @media (min-width: $min-lg) { display: none !important; } } .no-mobile { - @media(max-width: $max-sm) { + @media (max-width: $max-md) { display: none !important; } } .large-only { - @media(max-width: $max-lg) { + @media (max-width: $max-lg) { display: none !important; } } .no-large { - @media(min-width: $min-xl) { + @media (min-width: $min-xl) { display: none !important; } +} + +.no-spin-button { + -moz-appearance: textfield; + + &::-webkit-inner-spin-button, + &::-webkit-outer-spin-button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin: 0; + } } \ No newline at end of file diff --git a/src/styles/scss/_block.scss b/src/styles/scss/_block.scss index 88237a0e..79a03cf1 100644 --- a/src/styles/scss/_block.scss +++ b/src/styles/scss/_block.scss @@ -12,12 +12,15 @@ display: flex; flex-direction: column; + // box-shadow: 2px 2px 14px rgba(0, 0, 0, 0.1); + box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5); + &.basic { cursor: pointer; } } -.block .svg-inline--fa { +.block--title .svg-inline--fa { margin-top: -2px; margin-right: 10px; font-size: 1.5em @@ -25,159 +28,84 @@ .block--body { flex-grow: 2; - display: flex; } .block--title { display: flex; - justify-content: center; + justify-content: left; margin-bottom: 20px; - margin-top: 30px; + margin-top: 15px; + padding: 0 22px; >h3 { text-transform: uppercase; - font-size: 18px; + font-size: 14px; font-weight: 500; margin: 0; - } -} - -.block--basic { - flex-grow: 2; - margin: 40px 0; - - display: flex; - flex-direction: column; - align-items: center; -} - -.block--advanced { - flex-grow: 2; - margin: 10px 0; - - display: flex; - flex-direction: column; - align-items: center; -} -.block--basic--top { - white-space: nowrap; - margin: 40px 10px; - margin-bottom: 0; -} + font-style: normal; + font-weight: bold; -.block--basic--pending { - opacity: 0.8; + /* identical to box height */ + letter-spacing: 1.75px; + text-transform: uppercase; - .fees-block--basic--value { - font-size: 30px; - } + color: #FFFFFF; - .fees-block--basic--sign { - font-size: 15px; - margin-right: 0; - } - .svg-inline--fa { - margin-right: 5px; - } - .fees-block--basic--unit { - font-size: 15px; + svg { + height: 18px; + } } } -.block--basic--show { - cursor: pointer; - width: 100%; +.block--advanced { flex-grow: 2; + margin: 10px 0; + display: flex; - justify-content: center; flex-direction: column; - font-size: 36px; } -.block--basic--hide { - cursor: pointer; - color: white; - font-size: 14px; - - // Position at top left corner - position: relative; - top: 20px; - left: 20px; - - // Don't shift other elements down - width: 0; - height: 0; +.block--advanced--top { + padding: 0 22px; } .block--advanced--bottom { - margin-top: 20px; + @extend .scrollable; + @extend .no-scrollbar; + margin-top: 10px; width: 100%; } /**** GAS BLOCK *****/ .gas-block { - color: $red; -} - -.gas-block--basic--sign { - font-size: 36px; - margin-right: 5px; - margin-left: 0; - color: transparentize($red, 1 - 0.6); -} - -.gas-block--basic--value { - font-size: 64px; -} - -.gas-block--basic--unit { - margin-left: 5px; - font-size: 36px; - color: transparentize($red, 1 - 0.6); + // color: $red; } .gas-block--advanced--value { - font-size: 48px; + font-size: 38px; } .gas-block--advanced--unit { margin-left: 3px; - font-size: 24px; - color: transparentize($red, 1 - 0.6); + font-size: 22px; + opacity: 0.6; } /**** FEES BLOCK *****/ .fees-block { - color: $green; + // color: $green; .block--title { margin-bottom: 5px; } } -.fees-block--basic--value { - font-size: 64px; -} - -.fees-block--basic--unit { - margin-left: 5px; - font-size: 36px; - color: transparentize($green, 1 - 0.6); -} - -.fees-block--basic--sign { - font-size: 36px; - color: transparentize($green, 1 - 0.6); - margin-right: 5px; - margin-left: 0; -} - .fees-block--advanced--value { font-size: 48px; } @@ -185,12 +113,12 @@ .fees-block--advanced--unit { margin-left: 3px; font-size: 24px; - color: transparentize($green, 1 - 0.6); + opacity: 0.6; } .fees-block--advanced--sign { font-size: 36px; - color: transparentize($green, 1 - 0.6); + opacity: 0.6; margin-right: 3px; margin-left: 0; } @@ -202,34 +130,8 @@ border: none; } -.block--advanced--tabs { - border-bottom: 1px solid $green; - display: flex; - flex-flow: row; +.tabs--outer { width: 100%; - margin-bottom: 20px; - - .block--advanced--tab { - background: none; - border: none; - width: 100%; - color: white; - font-weight: 100; - cursor: pointer; - text-align: center; - display: flex; - justify-content: center; - padding: 10px; - - &.selected { - color: $green; - font-weight: 900; - } - - &:focus { - outline: 0; - } - } } .block--advanced--claim { @@ -248,11 +150,6 @@ } .fees-block--table { - - tr { - height: 60px; - } - tr:hover td { background-color: rgba(255, 255, 255, 0.05); } @@ -267,12 +164,21 @@ td { color: white; - font-size: 18px; + font-size: 14px; font-weight: 400; padding-top: 5px; padding-bottom: 5px; } + .fees-block--table--token { + display: flex; + align-items: center; + + span { + margin-top: 3px; + } + } + .tr { &, @@ -322,7 +228,7 @@ } .fees-block--table--usd-symbol { - color: transparentize($green, 1 - 0.6); + opacity: 0.6; } .fees-block--table--icon { @@ -332,7 +238,6 @@ } .network-block { - .network-block--info { @extend .no-scrollbar; @@ -357,6 +262,11 @@ min-width: 0px; } + td { + padding: 0; + padding-right: 5px; + } + tr td:first-child { font-weight: 900; } @@ -370,18 +280,23 @@ } .network-block--info { - padding: 0 40px; + padding: 0 22px; // display: flex; // justify-content: center; // align-items: center; - width: 438px; // Measured in inspector } .gas-block .block--body { - padding: 0 40px; + padding: 0 22px; +} + +.fees-block .block--body { + display: flex; } + + /* Gas Graph */ .gas-graph { @@ -427,4 +342,63 @@ border-bottom: 5px solid $red; cursor: default; } +} + +.tabs { + @extend .no-scrollbar; + + border-bottom: 2px solid #001B3A; + display: flex; + flex-flow: row; + width: 100%; + margin-bottom: 20px; + padding: 0 22px; + + overflow-y: scroll; + margin-top: 10px; + + .tab { + margin-bottom: 0px; + background: none; + border: none; + font-weight: 100; + cursor: pointer; + text-align: center; + display: flex; + justify-content: center; + padding: 10px 20px; + + font-weight: bold; + font-size: 14px; + line-height: 16px; + + /* identical to box height */ + text-transform: uppercase; + + color: #FFFFFF66; + + &.selected { + color: white; + border-bottom: 2px solid #006FE8; + } + + &:focus { + outline: 0; + } + } +} + +.withdraw-fees-disabled { + &:hover:after { + position: absolute; + top: 5px; + left: -300px; + width: 300px; + content: attr(title); + padding: 2px; + background-color: transparentize($color: white, $amount: 0); + line-height: 1.4em; + color: $red; + border: 1px solid $red; + } } \ No newline at end of file diff --git a/src/styles/scss/_darknodeList.scss b/src/styles/scss/_darknodeList.scss index 2517f418..daff2815 100644 --- a/src/styles/scss/_darknodeList.scss +++ b/src/styles/scss/_darknodeList.scss @@ -24,7 +24,8 @@ $darknode-card-margin: 10px; width: $card-height; background-color: $blue-dark; - box-shadow: 2px 2px 14px rgba(0, 0, 0, 0.1); + // box-shadow: 2px 2px 14px rgba(0, 0, 0, 0.1); + box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5); border-radius: 4px; text-align: center; @@ -138,12 +139,12 @@ $darknode-card-margin: 10px; position: absolute; width: 100%; // Position half way down screen - top: calc(50vh - calc(335px / 2)); // PS: calc can't contain SCSS variables + top: calc(50vh - calc(#{$card-height} / 2)); z-index: -1; align-items: center; - height: 335px; + height: $card-height; overflow: hidden; margin: 0; @@ -178,7 +179,7 @@ $darknode-card-margin: 10px; } } - &.fourth { + &.second { @media(max-width: 864px) { display: none; } @@ -194,6 +195,12 @@ $darknode-card-margin: 10px; display: flex; justify-content: center; align-items: center; + flex-direction: column; + + >p { + margin-top: 20px; + opacity: 0.5; + } } .card--hide { diff --git a/src/styles/scss/_errorBoundary.scss b/src/styles/scss/_errorBoundary.scss new file mode 100644 index 00000000..99070b44 --- /dev/null +++ b/src/styles/scss/_errorBoundary.scss @@ -0,0 +1,97 @@ +.error-boundary { + + min-width: 400px; + + &.error-boundary--standard { + padding: 20px; + border: 1px solid white; + width: calc(100% - 2px); + border-radius: 5px; + } + + button+button { + margin-left: 5px; + } + + .popup--buttons { + margin-top: 20px; + } + + button { + letter-spacing: 200%; + border-radius: 5px; + border-width: 2px; + font-weight: 500; + background: none; + } + + .error-boundary--feedback { + @extend .monospace; + border: 2px solid $blue-bright; + color: $blue-bright; + } + + &.error-boundary--standard { + .error-boundary--feedback { + color: white; + } + } + + h2 { + margin: 0; + padding: 0; + } + + .error-boundary--header { + display: flex; + align-items: center; + + >*+* { + margin-left: 20px; + } + } + + &.popup { + .error-boundary--header { + justify-content: center; + margin-bottom: 30px; + + h2 { + font-size: 20px; + } + } + } + + details { + margin-top: 20px; + font-size: 15px; + border-radius: 8px; + + .summary-title { + user-select: none; + } + + &:hover { + cursor: pointer; + } + + .summary-content { + @extend .monospace; + margin-top: 20px; + padding: 10px; + border-top: 1px solid #e2e8f0; + cursor: default; + font-weight: 200; + } + + summary { + font-size: 15px; + font-weight: 500; + + &:focus { + outline: none; + } + } + } + +} \ No newline at end of file diff --git a/src/styles/scss/_footer.scss b/src/styles/scss/_footer.scss new file mode 100644 index 00000000..5887d829 --- /dev/null +++ b/src/styles/scss/_footer.scss @@ -0,0 +1,60 @@ +.footer { + height: 60px; + width: calc(100% - 80px); + position: fixed; + bottom: 0; + left: 0; + margin-left: 80px; + padding: 0 30px; + + @media (max-width: $max-md) { + width: 100%; + margin-left: 0; + display: none; + } + + border-top: 1px solid #1A2E46; + background: #001B3A; + + display: flex; + justify-content: space-between; + align-items: center; + + >div>div { + font-weight: bold; + font-size: 12px; + line-height: 14px; + + /* identical to box height */ + letter-spacing: 1.5px; + text-transform: uppercase; + + color: #FFFFFF; + + mix-blend-mode: normal; + opacity: 0.4; + + a { + color: #FFFFFF; + text-decoration: none; + } + } +} + +.footer--right { + display: flex; + + >div+div { + margin-left: 40px; + } + + >div { + display: flex; + justify-content: center; + align-items: center; + } + + svg { + margin-right: 5px; + } +} \ No newline at end of file diff --git a/src/styles/scss/_grid.scss b/src/styles/scss/_grid.scss index c5793b3a..7646c192 100644 --- a/src/styles/scss/_grid.scss +++ b/src/styles/scss/_grid.scss @@ -11,6 +11,7 @@ $max-xs: ($min-sm - 1px) !default; $max-sm: ($min-md - 1px) !default; $max-md: ($min-lg - 1px) !default; $max-lg: ($min-xl - 1px) !default; +$max-xl: ($min-xxl - 1px) !default; /* * Base flex classes and mixins diff --git a/src/styles/scss/_header.scss b/src/styles/scss/_header.scss index 9c638a74..d2084c11 100644 --- a/src/styles/scss/_header.scss +++ b/src/styles/scss/_header.scss @@ -1,34 +1,41 @@ .header { - padding: 10px 0; + background: $blue-darker; + padding: 0 !important; margin-bottom: 20px; z-index: 6; -} - -.header .container { + border-bottom: 1px solid #1a2e46; display: flex; justify-content: space-between; + padding-left: 80px !important; + + @media (max-width: $max-md) { + padding-left: 0 !important; + } flex-direction: row; - height: 80px; + height: 48px !important; } +// .without-account .header { +// padding-left: 0 !important; +// } + .header .container>a { align-self: center; text-decoration: none; } .header--logo { - background-image: url('images/logo.svg'); + border-radius: 0 !important; + background: url("../images/logo.svg") center; + background-size: 30px 30px; background-repeat: no-repeat; - height: 48px; + height: 48px !important; width: 48px; -} + padding: 9px 40px !important; -.header--counter-weight { - width: 200px; - - @media(min-width: $min-md) { - width: 500px; + @media (min-width: $min-lg) { + border-right: 1px solid #1a2e46 !important; } } @@ -37,12 +44,10 @@ list-style: none; margin: 20px 0 0; padding: 0; - justify-content: flex-end; + width: 0 !important; - width: 200px; - - @media(min-width: $min-md) { + @media (min-width: $min-lg) { width: 500px; } @@ -50,7 +55,7 @@ } .header--menu li:hover { - @media(min-width: $min-sm) {} + @media (min-width: $min-sm) {} } .header--menu>li a { @@ -62,26 +67,24 @@ position: relative; text-align: center; color: white; - display: flex; align-items: center; margin: 0 20px; - font-size: 16px; font-weight: 500; - @media(min-width: $min-sm) { + @media (min-width: $min-sm) { padding: 0 22px; margin: 0; } } .header--menu li { - @media(min-width: $min-sm) {} + @media (min-width: $min-sm) {} } .header--menu li:last-child { - @media(min-width: $min-sm) {} + @media (min-width: $min-sm) {} } .header--menu a { @@ -89,17 +92,15 @@ } .header--menu .header--logout { - @media(min-width: $min-sm) { + @media (min-width: $min-sm) { display: none; } } .header .blocky { - height: 50px; + height: 30px; border-radius: 25px; - vertical-align: middle; - margin-right: 15px; } @@ -113,15 +114,15 @@ .header--dropdown--alt li { padding: 9px 20px; cursor: pointer; - font-weight: 500; line-height: normal; font-size: 12px; - color: #58585B; + color: #58585b; } .header--dropdown--option { min-width: 100%; + max-width: 100%; } .header--dropdown .header--dropdown--highlight { @@ -136,12 +137,15 @@ .header--account { display: flex; flex-direction: row; + + &.header--account--logged-out { + padding-left: 0 !important; + } } .header--account--right { display: flex; flex-direction: column; - text-align: left; justify-content: center; font-size: 12px; line-height: 20px; @@ -151,25 +155,17 @@ } } -.header--account--address { - color: $light-grey; -} - .header--account--type::before { - content: ''; - display: inline-block; - width: 7px; - height: 7px; - margin-right: 10px; - -moz-border-radius: 3.5px; - -webkit-border-radius: 3.5px; - border-radius: 3.5px; - background-color: #F45532; - margin-top: 5px; + content: none !important; } -.header--account--connected .header--account--type::before { - background-color: #3CBC98; +.header--account.header--selected .header--account--address { + font-weight: normal; + font-size: 10px; + line-height: 11px; + + color: #FFFFFF; + opacity: 0.6 !important; } .header--account--type { @@ -182,19 +178,29 @@ .header--selected { color: white !important; border: 0 !important; + font-weight: 500 !important; + border-left: 1px solid #1a2e46 !important; + border-right: 1px solid #1a2e46 !important; - svg { + :last-child { opacity: 1 !important; path { + opacity: 1 !important; fill: white !important; stroke: white !important; } } } +.header--selected--icon { + margin-right: 8px; +} + .header--mobile-menu--button { @extend .mobile-only; + + width: 0px; height: 100%; display: flex; align-items: center; @@ -207,9 +213,9 @@ min-width: 0; // Based on measurements for right side of menu - margin-left: 22px+15px; + margin-left: 22px + 15px; - @media(max-width: $max-xs) { + @media (max-width: $max-xs) { margin-left: 22px; } } @@ -219,14 +225,24 @@ width: 200px; } +.header--group>div { + height: 48px; + border-radius: 0; + margin: 0; + padding: 0 25px; +} + .header--group:not(.header--group--account) { @extend .no-mobile; } +.header--group--active { + border-bottom: 3px solid $blue-bright !important; +} + .transaction { margin-top: 10px; margin-bottom: 10px; - font-weight: 100; font-size: 14px; display: flex; @@ -245,7 +261,6 @@ a.transaction--hash { color: $blue-bright; } - } .transaction+.transaction { @@ -282,16 +297,45 @@ } .with-banner { + $top: 22px; + .header { - margin-top: 15px; + margin-top: $top; } .popup--container { - top: 15px; + top: $top; } .sidebar { - top: 15px; - height: calc(100vh - 15px); + top: $top; + height: calc(100vh - #{$top}); } +} + +.wallet-icon { + width: 45px; + height: 48px; + background: #006FE8; + + display: flex; + justify-content: center; + align-items: center; + + margin-right: 10px; + + .wallet-icon--inner { + background: url('../../styles/images/wallet.svg'); + height: 18px; + width: 21px; + margin-right: -2px; + } +} + +.header--search--input { + @extend .sidebar--search--input; + + background: transparent !important; + color: white; + width: 300px; } \ No newline at end of file diff --git a/src/styles/scss/_popup.scss b/src/styles/scss/_popup.scss index e4f96464..dc4712df 100644 --- a/src/styles/scss/_popup.scss +++ b/src/styles/scss/_popup.scss @@ -200,8 +200,28 @@ border: 0; padding: 0 10px; background: none; -} + &:hover:after { + position: absolute; + top: -40px; + left: -32.5px; + width: 100px; + content: attr(title); + padding: 2px; + background-color: transparentize($color: white, $amount: 0.2); + line-height: 1.4em; + color: $red; + border: 1px solid $red; + } + + &.new-address--plus--green { + &:hover:after { + top: -20px; + color: $green; + border: 1px solid $green; + } + } +} // Open Order .popup.open .open--tokens { display: flex; diff --git a/src/styles/scss/_sidebar.scss b/src/styles/scss/_sidebar.scss index 828fe4fb..f06d84d4 100644 --- a/src/styles/scss/_sidebar.scss +++ b/src/styles/scss/_sidebar.scss @@ -10,7 +10,7 @@ $mobile-full-width: 100vw; border-radius: 50%; } -.sidebar li { +.sidebar--row { height: 100px; border-left: 4px solid rgba(0, 0, 0, 0); display: flex; @@ -23,6 +23,22 @@ $mobile-full-width: 100vw; } } +.sidebar--top { + @extend .no-scrollbar; + overflow-y: scroll; + height: 100%; + flex: 1; + display: flex; + flex-flow: column; +} + +.sidebar--darknodes { + background: url('../../styles/images/sidebar-empty.svg') repeat-y; + background-position-x: 19px; + background-position-y: 27px; + flex: 1; +} + .sidebar .sidebar--nav li { height: 50px; } @@ -31,7 +47,7 @@ $mobile-full-width: 100vw; margin-bottom: 50px; } -.sidebar--nav--icon { +.sidebar--nav--icon svg { color: #FFFFFF; mix-blend-mode: normal; opacity: 0.4; @@ -48,24 +64,48 @@ $mobile-full-width: 100vw; font-size: 20px; } +.sidebar--nav--icon--circle { + background: rgba(255, 255, 255, 0.08); + width: 30px; + height: 30px; + border-radius: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.sidebar--plus { + background: none; + margin-top: -5px; +} + +.external-link { + opacity: 0.2; + margin-left: 5px; + margin-bottom: -1px; +} + +$max-sidebar: $max-md; +$min-header: $min-lg; + .sidebar.sidebar--mobile--active { - @media(max-width: $max-sm) { + @media(max-width: $max-sidebar) { width: $mobile-full-width; } } -.sidebar:hover { - @media(min-width: $min-md) { +.sidebar--logged-in:hover { + @media(min-width: $min-header) { width: $full-width; overflow-x: visible; } } -.sidebar li.sidebar--active { +.sidebar--row.sidebar--active { border-left: 4px solid $blue-bright; } -.sidebar li.sidebar--faded { +.sidebar--row.sidebar--faded { >* { opacity: 0.4; } @@ -78,12 +118,19 @@ $mobile-full-width: 100vw; justify-content: center; } +.sidebar--icon--empty { + width: 42px; + height: 42px; + border-radius: 100%; + background: rgba(0, 111, 232, 0.2); +} + .sidebar { @extend .no-scrollbar; position: fixed; background-color: $blue-darker; border-right: 2px solid transparentize(#58585B, 1 - 0.2); - padding: 30px 0; + padding: 0; top: 0; bottom: 0; left: 0; @@ -92,22 +139,23 @@ $mobile-full-width: 100vw; color: #FFFFFF; height: 100vh; width: $collapsed-width; + display: flex; + flex-flow: column; - @media(max-width: $max-sm) { + @media(max-width: $max-sidebar) { width: 0px; } - @media(max-width: $max-sm) { + @media(max-width: $max-sidebar) { // This sets the faTimes symbol to be aligned with the faBars symbol padding-top: 17px; } overflow-x: hidden; - overflow-y: scroll; -webkit-transition: width .1s linear; transition: width .1s linear; -webkit-transform: translateZ(0) scale(1, 1); - z-index: 4; + z-index: 20; } .sidebar::-webkit-scrollbar { @@ -115,21 +163,21 @@ $mobile-full-width: 100vw; background: transparent; } -.sidebar>ul { - margin: 7px 0; +.sidebar--nav { + margin: 0; } -.sidebar li { +.sidebar--row { position: relative; width: $full-width - 2px; - @media(max-width: $max-sm) { + @media(max-width: $max-sidebar) { // $mobile-full-width width: calc(100vw - 2px); } } -.sidebar li a { +.sidebar--row a { position: relative; display: table; border-collapse: collapse; @@ -148,7 +196,7 @@ $mobile-full-width: 100vw; .sidebar .sidebar--text { width: $full-width - $collapsed-width; - @media(max-width: $max-sm) { + @media(max-width: $max-sidebar) { // $mobile-full-width - $collapsed-width width: calc(100vw - 80px); } @@ -218,4 +266,81 @@ nav li { outline: 0; margin: 0; padding: 0; +} + + +.sidebar--search { + // position: fixed !important; + // bottom: 0; + background: #002247CC; +} + +input[type="text"].sidebar--search--input { + background: #F5F5F5; + border-radius: 15.5px; + + font-size: 12px; + line-height: 14px; + padding: 0 15px; + + &::placeholder { + font-weight: 600; + color: #979797; + } +} + +.search--filter--feedback { + visibility: hidden; + color: #979797; + padding: 0 30px; + margin-bottom: 5px; + text-overflow: ellipsis; + white-space: nowrap; + text-overflow: ellipsis; + white-space: pre; + overflow-x: hidden; +} + +.sidebar:hover { + @media(min-width: $min-header) { + .search--filter--feedback { + visibility: initial; + } + } +} + +.sidebar--connect { + background: #006FE8; + box-shadow: -2px 2px 4px #000000; + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; + transform: rotate(-90deg); + position: absolute; + top: 50vh; + width: 200px; + height: 28px; + left: -5px; + z-index: 20; + + cursor: pointer; + + font-size: 14px; + line-height: 16px; + color: #F9F9F9; + + display: flex; + justify-content: center; + align-items: center; + + .wallet-icon--inner { + background: url('../../styles/images/wallet.svg') no-repeat; + background-size: 12px 14px; + height: 14px; + width: 12px; + margin-right: 6px; + } + + @media(max-width: $max-sidebar) { + display: none; + } } \ No newline at end of file diff --git a/src/styles/scss/_stat.scss b/src/styles/scss/_stat.scss new file mode 100644 index 00000000..732a8749 --- /dev/null +++ b/src/styles/scss/_stat.scss @@ -0,0 +1,106 @@ +.statistic--row { + display: flex; + flex-wrap: wrap; + margin-bottom: 30px; + + .statistic--row { + margin-bottom: 20px; + } +} + +.stat { + + hr { + color: #1A2E46; + margin-bottom: 10px; + border-width: 1px; + } + + flex-grow: 1; + min-width: 200px; + margin-bottom: 10px; + + &:not(:last-child) { + margin-right: 20px; + } +} + +.stat .stat { + hr { + border: none; + } + + .stat--title { + font-size: 12px; + line-height: 14px; + letter-spacing: 1.5px; + height: 28px; + color: #F9F9F9; + } +} + +.stat--title { + font-size: 14px; + line-height: 16px; + font-weight: bold; + + /* identical to box height */ + letter-spacing: 1.75px; + text-transform: uppercase; + + // max-width: 200px; + + color: #FFFFFF; +} + +.stat--highlight { + background: #043D7D; + box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5); + border-radius: 6px; + // Left + padding-left: 20px; + padding-right: 20px; + // Top + padding-top: 5px; + margin-top: -5px; + // Bottom + margin-bottom: 0px; +} + +.stat--children--big { + font-size: 32px; + line-height: 37px; + color: #F9F9F9; + + .loading { + float: left; + } + + .stat--children--diff { + @extend .change-indicator; + font-style: normal; + font-weight: 500; + font-size: 16.2px; + line-height: 19px; + margin-left: 10px; + } +} + +.change-indicator { + &.positive { + color: #3CBC98; + + &::after { + content: "\25b2"; + } + } + + &.negative { + color: #FF4545; + + &::after { + content: "\25bc"; + ; + } + } +} \ No newline at end of file diff --git a/src/styles/scss/_statuspage.scss b/src/styles/scss/_statuspage.scss index b2e0c495..69a41924 100644 --- a/src/styles/scss/_statuspage.scss +++ b/src/styles/scss/_statuspage.scss @@ -110,8 +110,9 @@ display: flex; } + min-height: 600px; color: white; - margin-top: 24px; + margin-top: 16px; >div+div { margin-left: 22px; @@ -242,11 +243,15 @@ } .topup--title { - margin-bottom: 10px; - font-weight: bold; + font-weight: normal; font-size: 14px; + /* identical to box height, or 257% */ + color: #FFFFFF; + + mix-blend-mode: normal; + opacity: 0.6; } .topup--withdraw { @@ -274,11 +279,10 @@ display: inline-flex; align-items: center; - vertical-align: top; - background: #F5F5F5; - border-radius: 2px; - height: 42px; + >* { + flex-grow: 1; + } } .topup--input:not(.disabled):hover { @@ -286,11 +290,21 @@ } .topup--input>input[type=number] { - width: 100%; + @extend .no-spin-button; border: none; height: 42px; background: none; font-weight: 500; + font-size: 16px; + + background: #F5F5F5; + border-radius: 4px; + height: 32px; + + + &::placeholder { + color: #979797; + } } .topup--input>span { @@ -300,11 +314,28 @@ } .topup--input>button { + height: 32px; background: none; border: none; + border: 1px solid #FFFFFF; + box-sizing: border-box; + border-radius: 4px; + font-weight: 500; + font-size: 12px; + line-height: 14px; + + /* identical to box height */ + text-align: center; + + color: #F9F9F9; + transition: opacity 0.2s ease-in-out; + + &:disabled { + opacity: 0.6; + } } - .statuspage--graphs { + .block--column { flex-grow: 1; flex-basis: 0; @@ -312,6 +343,8 @@ flex-flow: column; justify-content: space-between; + box-shadow: none; + overflow: visible; background: none !important; padding: 0 !important; @@ -440,10 +473,78 @@ } } +.blocky--loading { + >div { + @extend .lds-dual-ring; + + &:after { + content: " "; + position: relative; + top: 0; + left: 0; + border-color: rgba(0, 111, 232, 0.28) #00000000 rgba(0, 111, 232, 0.28) #00000000; + border-width: 10px; + animation: lds-dual-ring 2s linear infinite; + width: 80px; + height: 80px; + margin-top: -105px; + line-height: 0; + } + } +} + .darknode-id { max-width: 300px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0px; +} + +.statuspage--banner--edit { + display: flex; + justify-content: center; + align-items: center; + + >div { + padding: 0; + margin-left: 10px; + height: 16px; + margin-top: -2px; + } +} + +.network-block { + flex-grow: 2 !important; +} + +.resources--chart { + width: 100px; +} + +.resources--block--charts { + display: flex; + padding: 0 22px; + justify-content: center; + + >*+* { + margin-left: 40px; + } +} + +.resources--chart--and--label { + display: flex; + flex-flow: column; + align-items: center; + + >canvas { + height: 150px; + width: 150px; + } + + >p { + margin-top: 8px; + font-weight: 900; + text-transform: uppercase; + } } \ No newline at end of file diff --git a/src/test/globalSetup.ts b/src/test/globalSetup.ts new file mode 100644 index 00000000..47637b5c --- /dev/null +++ b/src/test/globalSetup.ts @@ -0,0 +1,185 @@ +import { RenNetworkDetails } from "@renproject/contracts"; +import HDWalletProvider from "@truffle/hdwallet-provider"; +import { should } from "chai"; +import { join } from "path"; +import Web3 from "web3"; +import { AbiItem } from "web3-utils"; + +should(); + +const snapshotEVM = async (web3: Web3) => { + return await web3.currentProvider.send("evm_snapshot", []); +}; + +export const resetEVM = async (web3: Web3, snapshotID: string) => { + await web3.currentProvider.send("evm_revert", [snapshotID]); +}; + +export type Provider = { engine: { stop: () => void; } }; + +const ganache = (buildPath: string, networkID: number) => { + // tslint:disable: non-literal-require + const zBTC = require(join(buildPath, "zBTC.json")); + const zZEC = require(join(buildPath, "zZEC.json")); + const ZECShifter = require(join(buildPath, "ZECShifter.json")); + const zBCH = require(join(buildPath, "zBCH.json")); + const BCHShifter = require(join(buildPath, "BCHShifter.json")); + const ShifterRegistry = require(join(buildPath, "ShifterRegistry.json")); + const RenToken = require(join(buildPath, "RenToken.json")); + const DarknodeSlasher = require(join(buildPath, "DarknodeSlasher.json")); + const DarknodeRegistryStore = require(join(buildPath, "DarknodeRegistryStore.json")); + const DarknodeRegistry = require(join(buildPath, "DarknodeRegistry.json")); + const DarknodePaymentStore = require(join(buildPath, "DarknodePaymentStore.json")); + const DarknodePayment = require(join(buildPath, "DarknodePayment.json")); + const BTCShifter = require(join(buildPath, "BTCShifter.json")); + const ERC20 = require("darknode-sol/build/erc/ERC20.json"); + // tslint:enable: non-literal-require + + return { + name: "localnet", + chain: "kovan", + label: "Localnet", + chainLabel: "Kovan", + networkID, + infura: "https://kovan.infura.io", + etherscan: "https://kovan.etherscan.io", + renVM: { + mpkh: "0x0c0b293a30e5398533783f344c296f57d78e4cbc", + mintAuthority: "0x04084f1cACCB87Dcab9a29a084281294dA96Bf44", + }, + addresses: { + ren: { + DarknodeSlasher: { + address: DarknodeSlasher.networks[networkID].address, + abi: DarknodeSlasher.abi as AbiItem[], + artifact: DarknodeSlasher, + }, + DarknodeRegistry: { + address: DarknodeRegistry.networks[networkID].address, + abi: DarknodeRegistry.abi as AbiItem[], + artifact: DarknodeRegistry, + block: 0 + }, + DarknodeRegistryStore: { + address: DarknodeRegistryStore.networks[networkID].address, + abi: DarknodeRegistryStore.abi as AbiItem[], + artifact: DarknodeRegistryStore, + }, + DarknodePayment: { + address: DarknodePayment.networks[networkID].address, + abi: DarknodePayment.abi as AbiItem[], + artifact: DarknodePayment, + }, + DarknodePaymentStore: { + address: DarknodePaymentStore.networks[networkID].address, + abi: DarknodePaymentStore.abi as AbiItem[], + artifact: DarknodePaymentStore, + }, + }, + shifter: { + ShifterRegistry: { + address: ShifterRegistry.networks[networkID].address, + abi: ShifterRegistry.abi as AbiItem[], + artifact: ShifterRegistry, + }, + zBTC: { + _address: zBTC.networks[networkID].address, + abi: zBTC.abi as AbiItem[], + artifact: zBTC, + }, + BTCShifter: { + _address: BTCShifter.networks[networkID].address, + abi: BTCShifter.abi as AbiItem[], + artifact: BTCShifter, + }, + zZEC: { + _address: zZEC.networks[networkID].address, + abi: zZEC.abi as AbiItem[], + artifact: zZEC, + }, + ZECShifter: { + _address: ZECShifter.networks[networkID].address, + abi: ZECShifter.abi as AbiItem[], + artifact: ZECShifter, + }, + zBCH: { + _address: zBCH.networks[networkID].address, + abi: zBCH.abi as AbiItem[], + artifact: zBCH, + }, + BCHShifter: { + _address: BCHShifter.networks[networkID].address, + abi: BCHShifter.abi as AbiItem[], + artifact: BCHShifter, + }, + }, + tokens: { + DAI: { + address: "0xc4375b7de8af5a38a93548eb8453a498222c4ff2", + decimals: 18 + }, + BTC: { + address: zBTC.networks[networkID].address, + abi: zBTC.abi as AbiItem[], + artifact: zBTC, + decimals: 8 + }, + ZEC: { + address: zZEC.networks[networkID].address, + abi: zZEC.abi as AbiItem[], + artifact: zZEC, + decimals: 8 + }, + BCH: { + address: zBCH.networks[networkID].address, + abi: zBCH.abi as AbiItem[], + artifact: zBCH, + decimals: 8 + }, + REN: { + address: RenToken.networks[networkID].address, + abi: RenToken.abi as AbiItem[], + artifact: RenToken, + decimals: 18 + }, + ETH: { + address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + decimals: 18 + }, + }, + erc: { + ERC20: { + abi: ERC20.abi as AbiItem[], + artifact: ERC20, + }, + }, + } + }; +}; + +export const createWeb3 = async () => { + // Mnemonic generated by `ganache-cli -d` + const mnemonic = "myth like bonus scare over problem client lizard pioneer submit female collect"; + const provider = new HDWalletProvider(mnemonic, "http://localhost:8545"); + const web3: Web3 = new Web3(provider); + const networkID: number = await web3.eth.net.getId(); + const network: RenNetworkDetails = ganache(join(process.cwd(), "./node_modules/darknode-sol/build/development/"), networkID); + const address: string = (await web3.eth.getAccounts())[0]; + + return { web3, networkID, network, address, provider }; +}; + +// This is run by Jest once before running any tests. Globals can be accessed by +// the global teardown but not by the tests. (`globalSetup` is configured in +// `package.json`). +const globalSetup = async () => { + const { web3, provider } = await createWeb3(); + // tslint:disable-next-line: no-any + (global as any).web3 = web3; + // tslint:disable-next-line: no-any + (global as any).snapshotID = await snapshotEVM(web3); + // tslint:disable-next-line: no-any + (global as any).provider = provider; +}; + +export default globalSetup; diff --git a/src/test/globalTeardown.ts b/src/test/globalTeardown.ts new file mode 100644 index 00000000..328d238e --- /dev/null +++ b/src/test/globalTeardown.ts @@ -0,0 +1,12 @@ +import { Provider, resetEVM } from "./globalSetup"; + +// This is run by Jest once after running all tests. Globals are set in the +// global setup. (`globalTeardown` is configured in `package.json`). +const globalTeardown = async () => { + // tslint:disable-next-line: no-any + await resetEVM((global as any).web3, (global as any).snapshotID); + // tslint:disable-next-line: no-any + ((global as any).provider as Provider).engine.stop(); +}; + +export default globalTeardown; diff --git a/tsconfig.json b/tsconfig.json index 1ee2c55a..ee0c7b91 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,7 +41,8 @@ "acceptance-tests", "webpack", "jest", - "src/setupTests.ts" + "test", + "src/test" ], "include": [ "src" diff --git a/tslint.json b/tslint.json index 18c9ef22..8a96603f 100644 --- a/tslint.json +++ b/tslint.json @@ -46,9 +46,12 @@ "function-name": false, "no-return-await": false, "interface-over-type-literal": false, + "no-void-expression": false, // "ter-indent": false, - // Warnings + "no-unnecessary-type-assertion": { + "severity": "warning" + }, "no-suspicious-comment": { "severity": "warning" }, @@ -58,7 +61,6 @@ "strict-type-predicates": { "severity": "warning" }, - // Enabled "ordered-imports": true, "no-object-literal-type-assertion": true, @@ -69,19 +71,19 @@ "typedef": true, "no-any": true, "no-angle-bracket-type-assertion": true, - "no-void-expression": true, "no-use-before-declare": true, "promise-function-async": true, "prefer-readonly": true, "await-promise": true, "react-this-binding-issue": true, "no-string-based-set-timeout": true, - "no-unnecessary-type-assertion": true, - "no-unused-variable": [true, { - "ignore-pattern": "^_" - }], + "no-unused-variable": [ + true, + { + "ignore-pattern": "^_" + } + ], "only-arrow-functions": true, - // Configured "quotemark": [ true, @@ -114,14 +116,19 @@ "esSpecCompliant": true } ], - "increment-decrement": [true, "allow-post"], + "increment-decrement": [ + true, + "allow-post" + ], "align": [ true, "parameters", "statements" ], - "array-type": [true, "array-simple"], - + "array-type": [ + true, + "array-simple" + ], // Temporarily disabled - some work is required to get the project to // abide by these "no-unsafe-any": false, diff --git a/yarn.lock b/yarn.lock index ae785ad8..0ca8134b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,957 +2,898 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/core@7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.3.tgz#198d6d3af4567be3989550d97e068de94503074f" - integrity sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA== +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.0" - "@babel/helpers" "^7.4.3" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" + "@babel/highlight" "^7.8.3" -"@babel/core@^7.1.0": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" - integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== +"@babel/compat-data@^7.8.4": + version "7.8.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.5.tgz#d28ce872778c23551cbb9432fc68d28495b613b9" + integrity sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.5" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.5" - "@babel/types" "^7.4.4" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" + browserslist "^4.8.5" + invariant "^2.2.4" + semver "^5.5.0" -"@babel/core@^7.1.6", "@babel/core@^7.4.3": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" - integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - convert-source-map "^1.1.0" +"@babel/core@7.8.4", "@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" + integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" debug "^4.1.0" + gensync "^1.0.0-beta.1" json5 "^2.1.0" - lodash "^4.17.11" + lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" - integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== +"@babel/generator@^7.4.0", "@babel/generator@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" + integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.8.3" jsesc "^2.5.1" - lodash "^4.17.11" + lodash "^4.17.13" source-map "^0.5.0" - trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.8.3" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" - integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== +"@babel/helper-builder-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz#dee98d7d79cc1f003d80b76fe01c7f8945665ff6" + integrity sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.8.3" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/helper-create-class-features-plugin@^7.4.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" - integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - -"@babel/helper-define-map@^7.4.0", "@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" - integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== - dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== +"@babel/helper-call-delegate@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" + integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== +"@babel/helper-compilation-targets@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz#03d7ecd454b7ebe19a254f76617e61770aed2c88" + integrity sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg== dependencies: - "@babel/types" "^7.0.0" + "@babel/compat-data" "^7.8.4" + browserslist "^4.8.5" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" + integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" + integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== + dependencies: + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.6.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" + integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" + integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" - integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== - dependencies: - lodash "^4.17.11" + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" + integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" - integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/helper-split-export-declaration@^7.4.0", "@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== dependencies: - "@babel/types" "^7.4.4" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/helpers@^7.4.3", "@babel/helpers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" - integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== dependencies: - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" - integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== - -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" - integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== - -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== +"@babel/plugin-proposal-numeric-separator@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-class-properties@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.0.tgz#d70db61a2f1fd79de927eea91f6411c964e084b8" - integrity sha512-t2ECPNOXsIeK1JxJNKmgbzQtoG27KIlVE61vTqX0DKR9E9sZlVVxWUtEW9D5FlZ8b8j7SBNCHY47GgPKCKlpPg== +"@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.4.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-decorators@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.0.tgz#8e1bfd83efa54a5f662033afcc2b8e701f4bb3a9" - integrity sha512-d08TLmXeK/XbgCo7ZeZ+JaeZDtDai/2ctapTRsWWkkmy7G/cqz8DQN/HlWG7RR4YmfXxmExsbU3SuCjlM7AtUg== +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.4.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz#be27cd416eceeba84141305b93c282f5de23bbb4" - integrity sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g== +"@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" + integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" - integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-unicode-property-regex@^7.4.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-decorators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" - integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" - integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" - integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-typescript@^7.2.0": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991" - integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag== +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-async-to-generator@^7.4.0", "@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" - integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" -"@babel/plugin-transform-block-scoping@^7.4.0", "@babel/plugin-transform-block-scoping@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-classes@7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz#adc7a1137ab4287a555d429cc56ecde8f40c062c" - integrity sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ== +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.0" - "@babel/helper-split-export-declaration" "^7.4.0" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.4.3", "@babel/plugin-transform-classes@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" - integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== +"@babel/plugin-transform-classes@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" + integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz#1a95f5ca2bf2f91ef0648d5de38a8d472da4350f" - integrity sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg== +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" + integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@^7.4.3", "@babel/plugin-transform-destructuring@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" - integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== +"@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.4.3", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== +"@babel/plugin-transform-flow-strip-types@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz#da705a655466b2a9b36046b57bf0cbcd53551bd4" + integrity sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@7.4.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.0.tgz#f3c59eecff68c99b9c96eaafe4fe9d1fa8947138" - integrity sha512-C4ZVNejHnfB22vI2TYN4RUp2oCmq6cSEAg4RygSvYZUECRqUu9O4PMEMNJ4wsemaRGg27BbgYctG4BZh+AgIHw== +"@babel/plugin-transform-for-of@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" + integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-for-of@^7.4.3", "@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-function-name@^7.4.3", "@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== +"@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== +"@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.4.3", "@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== +"@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.4.0", "@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== +"@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" - integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== dependencies: - regexp-tree "^0.1.6" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" - integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== dependencies: - regexp-tree "^0.1.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-new-target@^7.4.0", "@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== +"@babel/plugin-transform-parameters@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" + integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-parameters@^7.4.3", "@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz#784c25294bddaad2323eb4ff0c9f4a3f6c87d6bc" + integrity sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ== dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-constant-elements@7.2.0", "@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz#ed602dc2d8bff2f0cb1a5ce29263dbdec40779f7" - integrity sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ== +"@babel/plugin-transform-react-jsx-self@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz#c4f178b2aa588ecfa8d077ea80d4194ee77ed702" + integrity sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-display-name@7.2.0", "@babel/plugin-transform-react-display-name@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" - integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== +"@babel/plugin-transform-react-jsx-source@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz#951e75a8af47f9f120db731be095d2b2c34920e0" + integrity sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" - integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== +"@babel/plugin-transform-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz#4220349c0390fdefa505365f68c103562ab2fc4a" + integrity sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-builder-react-jsx" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" - integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" - integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== - dependencies: - "@babel/helper-builder-react-jsx" "^7.3.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@babel/plugin-transform-regenerator@^7.4.3": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== +"@babel/plugin-transform-regenerator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" + integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== dependencies: regenerator-transform "^0.14.0" -"@babel/plugin-transform-regenerator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072" - integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g== - dependencies: - regenerator-transform "^0.13.4" - -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-runtime@7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.3.tgz#4d6691690ecdc9f5cb8c3ab170a1576c1f556371" - integrity sha512-7Q61bU+uEI7bCUFReT1NKn7/X6sDQsZ7wL1sJ9IYMAO7cI+eg6x9re1cEw2fCRMbbTVyoeUKWSV1M6azEfKCfg== +"@babel/plugin-transform-runtime@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" + integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@^7.2.0", "@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typescript@^7.3.2": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.4.5.tgz#ab3351ba35307b79981993536c93ff8be050ba28" - integrity sha512-RPB/YeGr4ZrFKNwfuQRlMf2lxoCUaU01MTw39/OFE/RiL8HDjtn68BwEPft1P7JN4akyEmjGWAMNldOV7o9V2g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.2.0" - -"@babel/plugin-transform-unicode-regex@^7.4.3", "@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/preset-env@7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.3.tgz#e71e16e123dc0fbf65a52cbcbcefd072fbd02880" - integrity sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.3" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.0" - "@babel/plugin-transform-classes" "^7.4.3" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.3" - "@babel/plugin-transform-dotall-regex" "^7.4.3" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.3" - "@babel/plugin-transform-function-name" "^7.4.3" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.3" - "@babel/plugin-transform-modules-systemjs" "^7.4.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.2" - "@babel/plugin-transform-new-target" "^7.4.0" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.3" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.3" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.2.0" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.3" - "@babel/types" "^7.4.0" - browserslist "^4.5.2" - core-js-compat "^3.0.0" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.3.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f" - integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.4" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" - browserslist "^4.5.2" - core-js-compat "^3.0.0" +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917" + integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@7.8.4", "@babel/preset-env@^7.4.5": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz#9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e" + integrity sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w== + dependencies: + "@babel/compat-data" "^7.8.4" + "@babel/helper-compilation-targets" "^7.8.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.4" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.3" + browserslist "^4.8.5" + core-js-compat "^3.6.2" invariant "^2.2.2" - js-levenshtein "^1.1.3" + levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-react@7.0.0", "@babel/preset-react@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" - integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - -"@babel/preset-typescript@7.3.3": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a" - integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg== +"@babel/preset-react@7.8.3", "@babel/preset-react@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.3.tgz#23dc63f1b5b0751283e04252e78cf1d6589273d2" + integrity sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.3.2" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.8.3" + "@babel/plugin-transform-react-jsx-self" "^7.8.3" + "@babel/plugin-transform-react-jsx-source" "^7.8.3" -"@babel/runtime@7.4.3": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.3.tgz#79888e452034223ad9609187a0ad1fe0d2ad4bdc" - integrity sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA== +"@babel/preset-typescript@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.8.3.tgz#90af8690121beecd9a75d0cc26c6be39d1595d13" + integrity sha512-qee5LgPGui9zQ0jR1TeU5/fP9L+ovoArklEqY12ek8P/wV5ZeM/VYSQYwICeoT6FfpJTekG9Ilay5PhwsOpMHA== dependencies: - regenerator-runtime "^0.13.2" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.8.3" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" - integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== +"@babel/runtime-corejs3@^7.7.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.4.tgz#ccc4e042e2fae419c67fa709567e5d2179ed3940" + integrity sha512-+wpLqy5+fbQhvbllvlJEVRIpYj+COUWnnsm+I4jZlA8Lo7/MJmBhGTCHyk1/RWfOqBRJ2MbadddG6QltTKTlrg== dependencies: + core-js-pure "^3.0.0" regenerator-runtime "^0.13.2" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.3": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d" - integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg== +"@babel/runtime@7.8.4", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" - integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" +"@babel/template@^7.4.0", "@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" + integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.4" + "@babel/types" "^7.8.3" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.11" + lodash "^4.17.13" -"@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" - integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.5" - "@babel/types" "^7.4.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" - -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" - integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== dependencies: esutils "^2.0.2" - lodash "^4.17.11" + lodash "^4.17.13" to-fast-properties "^2.0.0" +"@base2/pretty-print-object@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" + integrity sha512-4Th98KlMHr5+JkxfcoDT//6vY8vM+iSPrLNpHhRyLx2CFYi8e2RfqPLdpbnpo0Q5lQC5hNB79yes07zb02fvCw== + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -966,251 +907,231 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/normalize.css@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" - integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== - -"@emotion/babel-utils@^0.6.4": - version "0.6.10" - resolved "https://registry.yarnpkg.com/@emotion/babel-utils/-/babel-utils-0.6.10.tgz#83dbf3dfa933fae9fc566e54fbb45f14674c6ccc" - integrity sha512-/fnkM/LTEp3jKe++T0KyTszVGWNKPNOUJfjNKLO17BzQ6QPxgbg3whayom1Qr2oLFH3V92tDymU+dT5q676uow== - dependencies: - "@emotion/hash" "^0.6.6" - "@emotion/memoize" "^0.6.6" - "@emotion/serialize" "^0.9.1" - convert-source-map "^1.5.1" - find-root "^1.1.0" - source-map "^0.7.2" - -"@emotion/cache@^10.0.9": - version "10.0.9" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.9.tgz#e0c7b7a289f7530edcfad4dcf3858bd2e5700a6f" - integrity sha512-f7MblpE2xoimC4fCMZ9pivmsIn7hyWRIvY75owMDi8pdOSeh+w5tH3r4hBJv/LLrwiMM7cTQURqTPcYoL5pWnw== - dependencies: - "@emotion/sheet" "0.9.2" - "@emotion/stylis" "0.8.3" - "@emotion/utils" "0.11.1" - "@emotion/weak-memoize" "0.2.2" - -"@emotion/hash@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.1.tgz#9833722341379fb7d67f06a4b00ab3c37913da53" - integrity sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA== - -"@emotion/hash@^0.6.2", "@emotion/hash@^0.6.6": - version "0.6.6" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.6.tgz#62266c5f0eac6941fece302abad69f2ee7e25e44" - integrity sha512-ojhgxzUHZ7am3D2jHkMzPpsBAiB005GF5YU4ea+8DNPybMk01JJUM9V9YRlF/GE95tcOm8DxQvWA2jq19bGalQ== - -"@emotion/memoize@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" - integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== - -"@emotion/memoize@^0.6.1", "@emotion/memoize@^0.6.6": - version "0.6.6" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.6.6.tgz#004b98298d04c7ca3b4f50ca2035d4f60d2eed1b" - integrity sha512-h4t4jFjtm1YV7UirAFuSuFGyLa+NNxjdkq6DpFLANNQY5rHueFZHVY+8Cu1HYVP6DrheB0kv4m5xPjo7eKT7yQ== - -"@emotion/serialize@^0.11.6": - version "0.11.6" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.6.tgz#78be8b9ee9ff49e0196233ba6ec1c1768ba1e1fc" - integrity sha512-n4zVv2qGLmspF99jaEUwnMV0fnEGsyUMsC/8KZKUSUTZMYljHE+j+B6rSD8PIFtaUIhHaxCG2JawN6L+OgLN0Q== - dependencies: - "@emotion/hash" "0.7.1" - "@emotion/memoize" "0.7.1" - "@emotion/unitless" "0.7.3" - "@emotion/utils" "0.11.1" +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.27.tgz#7895db204e2c1a991ae33d51262a3a44f6737303" + integrity sha512-Zp8BEpbMunFsTcqAK4D7YTm3MvCp1SekflSLJH8lze2fCcSZ/yMkXHo8kb3t1/1Tdd3hAqf3Fb7z9VZ+FMiC9w== + dependencies: + "@emotion/sheet" "0.9.4" + "@emotion/stylis" "0.8.5" + "@emotion/utils" "0.11.3" + "@emotion/weak-memoize" "0.2.5" + +"@emotion/core@^10.0.9": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.27.tgz#7c3f78be681ab2273f3bf11ca3e2edc4a9dd1fdc" + integrity sha512-XbD5R36pVbohQMnKfajHv43g8EbN4NHdF6Zh9zg/C0nr0jqwOw3gYnC07Xj3yG43OYSRyrGsoQ5qPwc8ycvLZw== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/cache" "^10.0.27" + "@emotion/css" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +"@emotion/css@^10.0.27", "@emotion/css@^10.0.9": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== + dependencies: + "@emotion/serialize" "^0.11.15" + "@emotion/utils" "0.11.3" + babel-plugin-emotion "^10.0.27" + +"@emotion/hash@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.4.tgz#f14932887422c9056b15a8d222a9074a7dfa2831" + integrity sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A== + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/serialize@^0.11.15": + version "0.11.15" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.15.tgz#9a0f5873fb458d87d4f23e034413c12ed60a705a" + integrity sha512-YE+qnrmGwyR+XB5j7Bi+0GT1JWsdcjM/d4POu+TXkcnrRs4RFCCsi3d/Ebf+wSStHqAlTT2+dfd+b9N9EO2KBg== + dependencies: + "@emotion/hash" "0.7.4" + "@emotion/memoize" "0.7.4" + "@emotion/unitless" "0.7.5" + "@emotion/utils" "0.11.3" csstype "^2.5.7" -"@emotion/serialize@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.9.1.tgz#a494982a6920730dba6303eb018220a2b629c145" - integrity sha512-zTuAFtyPvCctHBEL8KZ5lJuwBanGSutFEncqLn/m9T1a6a93smBStK+bZzcNPgj4QS8Rkw9VTwJGhRIUVO8zsQ== - dependencies: - "@emotion/hash" "^0.6.6" - "@emotion/memoize" "^0.6.6" - "@emotion/unitless" "^0.6.7" - "@emotion/utils" "^0.8.2" - -"@emotion/sheet@0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.2.tgz#74e5c6b5e489a1ba30ab246ab5eedd96916487c4" - integrity sha512-pVBLzIbC/QCHDKJF2E82V2H/W/B004mDFQZiyo/MSR+VC4pV5JLG0TF/zgQDFvP3fZL/5RTPGEmXlYJBMUuJ+A== - -"@emotion/stylis@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.3.tgz#3ca7e9bcb31b3cb4afbaeb66156d86ee85e23246" - integrity sha512-M3nMfJ6ndJMYloSIbYEBq6G3eqoYD41BpDOxreE8j0cb4fzz/5qvmqU9Mb2hzsXcCnIlGlWhS03PCzVGvTAe0Q== - -"@emotion/stylis@^0.7.0": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.7.1.tgz#50f63225e712d99e2b2b39c19c70fff023793ca5" - integrity sha512-/SLmSIkN13M//53TtNxgxo57mcJk/UJIDFRKwOiLIBEyBHEcipgR6hNMQ/59Sl4VjCJ0Z/3zeAZyvnSLPG/1HQ== +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== -"@emotion/unitless@0.7.3": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f" - integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg== - -"@emotion/unitless@^0.6.2", "@emotion/unitless@^0.6.7": - version "0.6.7" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.6.7.tgz#53e9f1892f725b194d5e6a1684a7b394df592397" - integrity sha512-Arj1hncvEVqQ2p7Ega08uHLr1JuRYBuO5cIvcA+WWEQ5+VmkOE3ZXzl04NbQxeQpWX78G7u6MqxKuNX3wvYZxg== +"@emotion/stylis@0.8.5": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/utils@0.11.1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.1.tgz#8529b7412a6eb4b48bdf6e720cc1b8e6e1e17628" - integrity sha512-8M3VN0hetwhsJ8dH8VkVy7xo5/1VoBsDOk/T4SJOeXwTO1c4uIqVNx2qyecLFnnUWD5vvUqHQ1gASSeUN6zcTg== +"@emotion/unitless@0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@emotion/utils@^0.8.2": - version "0.8.2" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.8.2.tgz#576ff7fb1230185b619a75d258cbc98f0867a8dc" - integrity sha512-rLu3wcBWH4P5q1CGoSSH/i9hrXs7SlbRLkoq9IGuoPYNGQvDJ3pt/wmOM+XgYjIDRMVIdkUWt0RsfzF50JfnCw== +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== -"@emotion/weak-memoize@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.2.tgz#63985d3d8b02530e0869962f4da09142ee8e200e" - integrity sha512-n/VQ4mbfr81aqkx/XmVicOLjviMuy02eenSdJY33SVA7S2J42EU0P1H0mOogfYedb3wXA0d/LVtBrgTSm04WEA== +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@fortawesome/fontawesome-common-types@^0.2.18": - version "0.2.18" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.18.tgz#c0d8f073a5116b2de0a2c8a7aba66093a6956ce7" - integrity sha512-834DrzO2Ne3upCW+mJJPC/E6BsFcj+2Z1HmPIhbpbj8UaKmXWum4NClqLpUiMetugRlHuG4jbIHNdv2/lc3c1Q== +"@fortawesome/fontawesome-common-types@^0.2.27": + version "0.2.27" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.27.tgz#19706345859fc46adf3684ed01d11b40903b87e9" + integrity sha512-97GaByGaXDGMkzcJX7VmR/jRJd8h1mfhtA7RsxDBN61GnWE/PPCZhOdwG/8OZYktiRUF0CvFOr+VgRkJrt6TWg== -"@fortawesome/fontawesome-svg-core@^1.2.18": - version "1.2.18" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.18.tgz#c26cbded461895ebe260f0dea771ca29d8cb3517" - integrity sha512-1vyLWVQqxQ8q8bA2zgZcljk3RkeELlDJ757ymLk+ebK019AFgEFH5kTnR5OMN1SFsTwW1OHlFQO3VufdeCg/Gg== +"@fortawesome/fontawesome-svg-core@^1.2.25": + version "1.2.27" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.27.tgz#e4db8e3be81a40988213507c3e3d0c158a6641a3" + integrity sha512-sOD3DKynocnHYpuw2sLPnTunDj7rLk91LYhi2axUYwuGe9cPCw7Bsu9EWtVdNJP+IYgTCZIbyARKXuy5K/nv+Q== dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.18" + "@fortawesome/fontawesome-common-types" "^0.2.27" -"@fortawesome/free-brands-svg-icons@^5.8.2": - version "5.8.2" - resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.8.2.tgz#e68a509c986d5d197cc5bd9ae8d966eff513468d" - integrity sha512-nhEWctDOP6f+Ka10LXAFoF+6mtWidC2iQgTBGRGgydmhBtcIEwyxWVx5wQHa86A1zAMi5TnipDAYQs2qn7DD6A== +"@fortawesome/free-brands-svg-icons@^5.11.2": + version "5.12.1" + resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.12.1.tgz#67977addd15e21e57aa1ed71cd2ddecdfaa88647" + integrity sha512-IYUYcgGsQuwiIHjRGfeSTCIQKUSZMb6FsV6mDj78K0D+YzGJkM4cvEBBUMHtnla5D2HCxncMI/9JX5YIk2GHeQ== dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.18" + "@fortawesome/fontawesome-common-types" "^0.2.27" -"@fortawesome/free-regular-svg-icons@^5.8.2": - version "5.8.2" - resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.8.2.tgz#f61c603c73695a41bcee9d6f9d44e2ca4829f151" - integrity sha512-499WODlsDcXA9hM+Y3ZqoWj1kKhVLCHS8PnJs3zEaoPr5W6yrE9Jnp3C9Hb9KpwnRMh3IRXZ3XqxyUaQFMMRFw== +"@fortawesome/free-regular-svg-icons@^5.11.2": + version "5.12.1" + resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.12.1.tgz#4b378d93655acc5e432d5ed7ee127768dd351a99" + integrity sha512-bGda18seHXb+24K6DPUFzqn4kG7B+JViP/BscMcNUXvT00M86xNhdgP2TXSdflQXn53QWqymKjx/8rhaDOJyhA== dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.18" + "@fortawesome/fontawesome-common-types" "^0.2.27" -"@fortawesome/free-solid-svg-icons@^5.8.2": - version "5.8.2" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.8.2.tgz#aa2f042f73aca43eb4a26149907e63bf26d2e31c" - integrity sha512-5tF6WOFlqqO95zY5ukSB6jliDa3jnk1p5L4K/a58ccDFsbjSkhfGuvZkRkeWxH8uMms81pZd6yQTwQrkedeJmg== +"@fortawesome/free-solid-svg-icons@^5.11.2": + version "5.12.1" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.12.1.tgz#76b6f958a3471821ff146f8f955e6d7cfe87147c" + integrity sha512-k3MwRFFUhyL4cuCJSaHDA0YNYMELDXX0h8JKtWYxO5XD3Dn+maXOMrVAAiNGooUyM2v/wz/TOaM0jxYVKeXX7g== dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.18" + "@fortawesome/fontawesome-common-types" "^0.2.27" -"@fortawesome/react-fontawesome@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.4.tgz#18d61d9b583ca289a61aa7dccc05bd164d6bc9ad" - integrity sha512-GwmxQ+TK7PEdfSwvxtGnMCqrfEm0/HbRHArbUudsYiy9KzVCwndxa2KMcfyTQ8El0vROrq8gOOff09RF1oQe8g== +"@fortawesome/react-fontawesome@^0.1.7": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.8.tgz#cb6d4dd3aeec45b6ff2d48c812317a6627618511" + integrity sha512-I5h9YQg/ePA3Br9ISS18fcwOYmzQYDSM1ftH03/8nHkiqIVHtUyQBw482+60dnzvlr82gHt3mGm+nDUp159FCw== dependencies: - humps "^2.0.1" prop-types "^15.5.10" "@hapi/address@2.x.x": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" - integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw== + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== -"@hapi/hoek@6.x.x": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595" - integrity sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A== +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.0.tgz#2f9ce301c8898e1c3248b0a8564696b24d1a9a5a" + integrity sha512-7XYT10CZfPsH7j9F1Jmg1+d0ezOux2oM2GfArAzLwWe4mE2Dr3hVjsAL6+TFY49RRJlCdJDMw3nJsLFroTc8Kw== "@hapi/joi@^15.0.0": - version "15.0.3" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.0.3.tgz#e94568fd859e5e945126d5675e7dd218484638a7" - integrity sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig== + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== dependencies: "@hapi/address" "2.x.x" - "@hapi/hoek" "6.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" "@hapi/topo" "3.x.x" "@hapi/topo@3.x.x": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.0.tgz#5c47cd9637c2953db185aa957a27bcb2a8b7a6f8" - integrity sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww== + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== dependencies: - "@hapi/hoek" "6.x.x" + "@hapi/hoek" "^8.3.0" -"@jest/console@^24.7.1": - version "24.7.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" - integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== dependencies: - "@jest/source-map" "^24.3.0" + "@jest/source-map" "^24.9.0" chalk "^2.0.1" slash "^2.0.0" -"@jest/core@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" - integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== dependencies: "@jest/console" "^24.7.1" - "@jest/reporters" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" ansi-escapes "^3.0.0" chalk "^2.0.1" exit "^0.1.2" graceful-fs "^4.1.15" - jest-changed-files "^24.8.0" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - jest-watcher "^24.8.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" micromatch "^3.1.10" p-each-series "^1.0.0" - pirates "^4.0.1" realpath-native "^1.1.0" rimraf "^2.5.4" + slash "^2.0.0" strip-ansi "^5.0.0" -"@jest/environment@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" - integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== - dependencies: - "@jest/fake-timers" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - -"@jest/fake-timers@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" - integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== - dependencies: - "@jest/types" "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - -"@jest/reporters@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" - integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.2" @@ -1218,74 +1139,75 @@ istanbul-lib-instrument "^3.0.1" istanbul-lib-report "^2.0.4" istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.1.1" - jest-haste-map "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" jest-worker "^24.6.0" - node-notifier "^5.2.1" + node-notifier "^5.4.2" slash "^2.0.0" source-map "^0.6.0" string-length "^2.0.0" -"@jest/source-map@^24.3.0": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" - integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== dependencies: callsites "^3.0.0" graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/test-result@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" - integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== dependencies: - "@jest/console" "^24.7.1" - "@jest/types" "^24.8.0" + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-sequencer@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" - integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== dependencies: - "@jest/test-result" "^24.8.0" - jest-haste-map "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" -"@jest/transform@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" - integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" babel-plugin-istanbul "^5.1.0" chalk "^2.0.1" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.15" - jest-haste-map "^24.8.0" - jest-regex-util "^24.3.0" - jest-util "^24.8.0" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" micromatch "^3.1.10" + pirates "^4.0.1" realpath-native "^1.1.0" slash "^2.0.0" source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/types@^24.7.0", "@jest/types@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" - integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^12.0.9" + "@types/yargs" "^13.0.0" "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" @@ -1300,78 +1222,201 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@renex/fonts@^1.0.1": +"@openzeppelin/upgrades@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.6.0.tgz#595fcd77fdcbe56b9ffba53b0c17c7983389fe7d" + integrity sha512-vqL3ny0Z2M023H5cLiAS4qY+bjFYqhkPvxpfvYtTeaB2Bt/UeRD2Qk8+VvCFpojYOr9OBHu3RJWrFDcvgPcVxA== + dependencies: + "@types/cbor" "^2.0.0" + axios "^0.18.0" + bignumber.js "^7.2.0" + cbor "^4.1.5" + chalk "^2.4.1" + ethers "^4.0.20" + glob "^7.1.3" + lodash.concat "^4.5.0" + lodash.difference "^4.5.0" + lodash.every "^4.6.0" + lodash.findlast "^4.6.0" + lodash.flatten "^4.4.0" + lodash.includes "^4.3.0" + lodash.invertby "^4.7.0" + lodash.isempty "^4.4.0" + lodash.isequal "^4.5.0" + lodash.isstring "^4.0.1" + lodash.keys "^4.2.0" + lodash.map "^4.6.0" + lodash.omit "^4.5.0" + lodash.pick "^4.4.0" + lodash.pickby "^4.6.0" + lodash.random "^3.2.0" + lodash.reverse "^4.0.1" + lodash.some "^4.6.0" + lodash.uniq "^4.5.0" + lodash.values "^4.3.0" + lodash.without "^4.4.0" + semver "^5.5.1" + spinnies "^0.4.2" + truffle-flattener "^1.4.0" + web3 "1.2.2" + web3-eth "1.2.2" + web3-eth-contract "1.2.2" + web3-utils "1.2.2" + +"@renproject/contracts@0.3.28": + version "0.3.28" + resolved "https://registry.yarnpkg.com/@renproject/contracts/-/contracts-0.3.28.tgz#baaa6080fb84d38444e1fb96f56c2ed16e478262" + integrity sha512-n2g/k711MYTPv9UjNV8JNUvkheBAgigbupVK8szv/Y68J0BUdF/FC2eiL5JNTQgBQuJB9g877ZdR9c+kosmrWw== + dependencies: + darknode-sol "https://github.com/renproject/darknode-sol#e9e7357e3e8d6e30bbd03a72eaaefdcb9a0e6ad7" + +"@renproject/contracts@^0.3.28": + version "0.3.32" + resolved "https://registry.yarnpkg.com/@renproject/contracts/-/contracts-0.3.32.tgz#2927f7d27c964ee94ce164f5a81fc90f71b59380" + integrity sha512-S3/w4XK9vogQflrDFtSO2hGnHNjJ6x1XJuUVjelV8Hr+tk+S1YLmmDRNKq7wC/rQXO8XxIrjq8qb0OjOgrDseQ== + dependencies: + darknode-sol "https://github.com/renproject/darknode-sol#ff7d0a442a52ae7990e0ee21a51b037c47450448" + +"@renproject/fonts@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@renex/fonts/-/fonts-1.0.1.tgz#7967434b343d5cd31c575b633997677f33f6856c" - integrity sha512-MXYgG1HVzILdXIzLC17ln33o6MU8p+wDjPmbKgvKpQGJNaT1eflhj078f+ha/VQ2IMs8B5PNZU1X9mDL4enMgQ== - -"@renex/react-components@^1.0.21": - version "1.0.21" - resolved "https://registry.yarnpkg.com/@renex/react-components/-/react-components-1.0.21.tgz#ab579ea111917e4a6c95618ebca83f0f9c8005ef" - integrity sha512-tjF3HdFQ6mvvvhesvhYaPG4Ix2PWG5s7Z7PZK4PwnwPvZDcW1ke9GI7TAG2X7Ln+ej/bWZFcv8RxTE+jeABEAw== - dependencies: - "@fortawesome/fontawesome-svg-core" "^1.2.18" - "@fortawesome/free-brands-svg-icons" "^5.8.2" - "@fortawesome/react-fontawesome" "^0.1.4" - "@renex/fonts" "^1.0.1" - emotion "^10.0.9" + resolved "https://registry.yarnpkg.com/@renproject/fonts/-/fonts-1.0.1.tgz#5eb052638eec862760044b4367f062f8a890c5b8" + integrity sha512-OWk811Ay63UdPxY5nEg4N99Goz6K9HLaeGfUN2q0uehhQ70hJDqDQq/vYl5rtE07mv7MYX7GYTpj5POlPbZNRg== + +"@renproject/react-components@1.0.37": + version "1.0.37" + resolved "https://registry.yarnpkg.com/@renproject/react-components/-/react-components-1.0.37.tgz#7403ea35253db77d19672ae6b7951a7e251154a1" + integrity sha512-2sfT/nnH7QZqDRjga3WNoUiEsOkczzmuHHdMCYEl+t7TTieBLRciwAQIY0oB7bKSgvNdcZYFCV6qyW8TP5db/w== + dependencies: + "@fortawesome/fontawesome-svg-core" "^1.2.25" + "@fortawesome/free-brands-svg-icons" "^5.11.2" + "@fortawesome/react-fontawesome" "^0.1.7" + "@renproject/fonts" "^1.0.1" + "@types/react-select" "^3.0.8" immutable "^4.0.0-rc.12" moment "^2.24.0" - react-element-to-jsx-string "^14.0.2" - react-router "^5.0.0" - react-router-dom "^5.0.0" - react-select "^2.4.3" - -"@sentry/browser@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.4.0.tgz#4c553e4769555e09a34f8f86c6af27ebec74c715" - integrity sha512-lsGJqryHXrnWRkdahnep0m+m65zyMJGCmB2T8pGS+SFcSXdx94TaK4PiPaCl6XUCT5ejuQUHoXsEBmK/3S6beA== - dependencies: - "@sentry/core" "5.4.0" - "@sentry/types" "5.4.0" - "@sentry/utils" "5.4.0" + react-element-to-jsx-string "^14.1.0" + react-router "^5.1.2" + react-router-dom "^5.1.2" + react-select "^3.0.8" + +"@renproject/ren@^0.2.3": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@renproject/ren/-/ren-0.2.6.tgz#545b7ae2b1155718204afe945f99e1608a9da1cc" + integrity sha512-Kcj4QU4WiKUcVDYuPi83rL+F+j3f51qTqb2yAecSmw1DctLenPLrPa/k5/5tEWE+pL9mczPTrI47wL5dRb1pJw== + dependencies: + "@renproject/contracts" "^0.3.28" + "@types/bn.js" "^4.11.5" + "@types/bs58" "^4.0.1" + "@types/node" "^12.12.21" + axios "^0.19.0" + bignumber.js "^9.0.0" + bitcore-lib "^8.13.2" + bitcore-lib-cash "^8.13.2" + bitcore-lib-zcash zcash-hackworks/bitcore-lib-zcash + bn.js "^5.0.0" + bs58 "^4.0.1" + ethereumjs-util "^6.2.0" + immutable "^4.0.0-rc.12" + send-crypto "0.1.9" + sha3 "^2.1.1" + wallet-address-validator "^0.2.4" + web3 "^2.0.0-alpha.1" + web3-core "^2.0.0-alpha.1" + web3-eth-abi "^2.0.0-alpha.1" + +"@resolver-engine/core@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" + integrity sha512-nsLQHmPJ77QuifqsIvqjaF5B9aHnDzJjp73Q1z6apY3e9nqYrx4Dtowhpsf7Jwftg/XzVDEMQC+OzUBNTS+S1A== + dependencies: + debug "^3.1.0" + request "^2.85.0" + +"@resolver-engine/fs@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.2.1.tgz#f98a308d77568cc02651d03636f46536b941b241" + integrity sha512-7kJInM1Qo2LJcKyDhuYzh9ZWd+mal/fynfL9BNjWOiTcOpX+jNfqb/UmGUqros5pceBITlWGqS4lU709yHFUbg== + dependencies: + "@resolver-engine/core" "^0.2.1" + debug "^3.1.0" + +"@resolver-engine/imports-fs@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.2.2.tgz#5a81ef3285dbf0411ab3b15205080a1ad7622d9e" + integrity sha512-gFCgMvCwyppjwq0UzIjde/WI+yDs3oatJhozG9xdjJdewwtd7LiF0T5i9lrHAUtqrQbqoFE4E+ZMRVHWpWHpKQ== + dependencies: + "@resolver-engine/fs" "^0.2.1" + "@resolver-engine/imports" "^0.2.2" + debug "^3.1.0" + +"@resolver-engine/imports@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.2.2.tgz#d3de55a1bb5f3beb7703fdde743298f321175843" + integrity sha512-u5/HUkvo8q34AA+hnxxqqXGfby5swnH0Myw91o3Sm2TETJlNKXibFGSKBavAH+wvWdBi4Z5gS2Odu0PowgVOUg== + dependencies: + "@resolver-engine/core" "^0.2.1" + debug "^3.1.0" + hosted-git-info "^2.6.0" + +"@sentry/browser@^5.10.1": + version "5.12.1" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.12.1.tgz#dc1f268595269fb7277f55eb625c7e92d76dc01b" + integrity sha512-Zl7VdppUxctyaoqMSEhnDJp2rrupx8n8N2n3PSooH74yhB2Z91nt84mouczprBsw3JU1iggGyUw9seRFzDI1hw== + dependencies: + "@sentry/core" "5.12.0" + "@sentry/types" "5.12.0" + "@sentry/utils" "5.12.0" tslib "^1.9.3" -"@sentry/core@5.4.0", "@sentry/core@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.4.0.tgz#c40969ace80d637195bcc0ae6e5819f0c5e8ae46" - integrity sha512-luIJPftVnrW0ZKqs9W6YCpzKZVbOgQv8Ae7KB0Acsvqeoqjtx4zHHfVfu5VPkfhrOYN3NsM1IpApXtSdMiJCfg== +"@sentry/core@5.12.0", "@sentry/core@^5.10.1": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.12.0.tgz#d6380c4ef7beee5f418ac1d0e5be86a2de2af449" + integrity sha512-wY4rsoX71QsGpcs9tF+OxKgDPKzIFMRvFiSRcJoPMfhFsTilQ/CBMn/c3bDtWQd9Bnr/ReQIL6NbnIjUsPHA4Q== dependencies: - "@sentry/hub" "5.4.0" - "@sentry/minimal" "5.4.0" - "@sentry/types" "5.4.0" - "@sentry/utils" "5.4.0" + "@sentry/hub" "5.12.0" + "@sentry/minimal" "5.12.0" + "@sentry/types" "5.12.0" + "@sentry/utils" "5.12.0" tslib "^1.9.3" -"@sentry/hub@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.4.0.tgz#03ab154bf2e2c33cb80d951b464de84ad2a6fbf9" - integrity sha512-X0iLNcouXcLWzuOJz2YjTn1E11b7pzcG98/iFTHW3AKPjnJNt92XRpjsDI2iT8+ODUDiFqaFmACSn2oZK80WGQ== +"@sentry/hub@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.12.0.tgz#5e8c8f249f5bdbeb8cc4ec02c2ccc53a67f2cc02" + integrity sha512-3k7yE8BEVJsKx8mR4LcI4IN0O8pngmq44OcJ/fRUUBAPqsT38jsJdP2CaWhdlM1jiNUzUDB1ktBv6/lY+VgcoQ== dependencies: - "@sentry/types" "5.4.0" - "@sentry/utils" "5.4.0" + "@sentry/types" "5.12.0" + "@sentry/utils" "5.12.0" tslib "^1.9.3" -"@sentry/minimal@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.4.0.tgz#e3c569c68d6c09aad533832b2c713ad94bb2a511" - integrity sha512-MuOLavHHTXXWKyfTcwqpjhkdYlJDyOfjfcf+b/d38+8cs064rpNScxTZyYj2KKxNGcCqDgUsY175fNp/D1fyMw== +"@sentry/integrations@^5.10.1": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-5.12.0.tgz#4d735abf2989049ef860e3eaad0883b63d8274e6" + integrity sha512-4G/TvCEP9M6xgY61r46UE4ruSgF42rZnvO0ZfIBI/240DNYMTpHLvjU3Xvrv3wDl3emCvy4QgAIceI/zj8nPjw== dependencies: - "@sentry/hub" "5.4.0" - "@sentry/types" "5.4.0" + "@sentry/types" "5.12.0" + "@sentry/utils" "5.12.0" tslib "^1.9.3" -"@sentry/types@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.4.0.tgz#340854be18618e4435f9c168adfa2c9e407fbcb3" - integrity sha512-R8IFM77rzp0ngR/XQFLsXUK2uE7jLf21MsU9mpUwLtxcJp8rs7I77HgzA5MEerdG9Sbxw5RaLq9wO7noHGfUmQ== +"@sentry/minimal@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.12.0.tgz#2611e2aa520c1edb7999e6de51bd65ec66341757" + integrity sha512-fk73meyz4k4jCg9yzbma+WkggsfEIQWI2e2TWfYsRGcrV3RnlSrXyM4D91/A8Bjx10SNezHPUFHjasjlHXOkyA== + dependencies: + "@sentry/hub" "5.12.0" + "@sentry/types" "5.12.0" + tslib "^1.9.3" + +"@sentry/types@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.12.0.tgz#5367e53c74261beea01502e3f7b6f3d822682a31" + integrity sha512-aZbBouBLrKB8wXlztriIagZNmsB+wegk1Jkl6eprqRW/w24Sl/47tiwH8c5S4jYTxdAiJk+SAR10AAuYmIN3zg== -"@sentry/utils@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.4.0.tgz#32882f16cd516f341ba1dafeb020614aaf6d4b5c" - integrity sha512-NlYMAyiI9iIItLDxJ17tLMtuu7261t93tcOGSMdDQZlmryR6ZAMenbCKTf5MrpA2iHfX84gyfmr67lh8uSHkPg== +"@sentry/utils@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.12.0.tgz#62967f934a3ee6d21472eac0219084e37225933e" + integrity sha512-fYUadGLbfTCbs4OG5hKCOtv2jrNE4/8LHNABy9DwNJ/t5DVtGqWAZBnxsC+FG6a3nVqCpxjFI9AHlYsJ2wsf7Q== dependencies: - "@sentry/types" "5.4.0" + "@sentry/types" "5.12.0" tslib "^1.9.3" "@sindresorhus/is@^0.14.0": @@ -1399,10 +1444,10 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== -"@svgr/babel-plugin-svg-dynamic-title@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.2.0.tgz#43f0f689a5347a894160eb51b39a109889a4df20" - integrity sha512-gH2qItapwCUp6CCqbxvzBbc4dh4OyxdYKsW3EOkYexr0XUmQL0ScbdNh6DexkZ01T+sdClniIbnCObsXcnx3sQ== +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== "@svgr/babel-plugin-svg-em-dimensions@^4.2.0": version "4.2.0" @@ -1419,70 +1464,68 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== -"@svgr/babel-preset@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.2.0.tgz#c9fc236445a02a8cd4e750085e51c181de00d6c5" - integrity sha512-iLetHpRCQXfK47voAs5/uxd736cCyocEdorisjAveZo8ShxJ/ivSZgstBmucI1c8HyMF5tOrilJLoFbhpkPiKw== +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" "@svgr/babel-plugin-transform-svg-component" "^4.2.0" -"@svgr/core@^4.1.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.2.0.tgz#f32ef8b9d05312aaa775896ec30ae46a6521e248" - integrity sha512-nvzXaf2VavqjMCTTfsZfjL4o9035KedALkMzk82qOlHOwBb8JT+9+zYDgBl0oOunbVF94WTLnvGunEg0csNP3Q== +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== dependencies: - "@svgr/plugin-jsx" "^4.2.0" + "@svgr/plugin-jsx" "^4.3.3" camelcase "^5.3.1" - cosmiconfig "^5.2.0" + cosmiconfig "^5.2.1" -"@svgr/hast-util-to-babel-ast@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.2.0.tgz#dd743435a5f3a8e84a1da067f27b5fae3d7b6b63" - integrity sha512-IvAeb7gqrGB5TH9EGyBsPrMRH/QCzIuAkLySKvH2TLfLb2uqk98qtJamordRQTpHH3e6TORfBXoTo7L7Opo/Ow== +"@svgr/hast-util-to-babel-ast@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== dependencies: - "@babel/types" "^7.4.0" + "@babel/types" "^7.4.4" -"@svgr/plugin-jsx@^4.1.0", "@svgr/plugin-jsx@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.2.0.tgz#15a91562c9b5f90640ea0bdcb2ad59d692ee7ae9" - integrity sha512-AM1YokmZITgveY9bulLVquqNmwiFo2Px2HL+IlnTCR01YvWDfRL5QKdnF7VjRaS5MNP938mmqvL0/8oz3zQMkg== +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== dependencies: - "@babel/core" "^7.4.3" - "@svgr/babel-preset" "^4.2.0" - "@svgr/hast-util-to-babel-ast" "^4.2.0" - rehype-parse "^6.0.0" - unified "^7.1.0" - vfile "^4.0.0" + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.3" + "@svgr/hast-util-to-babel-ast" "^4.3.2" + svg-parser "^2.0.0" -"@svgr/plugin-svgo@^4.0.3": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.2.0.tgz#2a594a2d3312955e75fd87dc77ae51f377c809f3" - integrity sha512-zUEKgkT172YzHh3mb2B2q92xCnOAMVjRx+o0waZ1U50XqKLrVQ/8dDqTAtnmapdLsGurv8PSwenjLCUpj6hcvw== +"@svgr/plugin-svgo@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== dependencies: - cosmiconfig "^5.2.0" + cosmiconfig "^5.2.1" merge-deep "^3.0.2" - svgo "^1.2.1" + svgo "^1.2.2" -"@svgr/webpack@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.1.0.tgz#20c88f32f731c7b1d4711045b2b993887d731c28" - integrity sha512-d09ehQWqLMywP/PT/5JvXwPskPK9QCXUjiSkAHehreB381qExXf5JFCBWhfEyNonRbkIneCeYM99w+Ud48YIQQ== +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== dependencies: - "@babel/core" "^7.1.6" + "@babel/core" "^7.4.5" "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.1.6" + "@babel/preset-env" "^7.4.5" "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.1.0" - "@svgr/plugin-jsx" "^4.1.0" - "@svgr/plugin-svgo" "^4.0.3" - loader-utils "^1.1.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -1491,10 +1534,25 @@ dependencies: defer-to-connect "^1.0.1" +"@truffle/hdwallet-provider@^1.0.26", "@truffle/hdwallet-provider@^1.0.28": + version "1.0.30" + resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.0.30.tgz#55f5f21d9fbc76b3597d25f709e9f00998a91738" + integrity sha512-i2xNocQ8Pw8g24Q2hGRy5VLzQsAA10EC63msBEP+ldc9xGLzAV86qOboEqjf/h1PZm0LtXzs8lRfW+iF5Xdc2A== + dependencies: + any-promise "^1.3.0" + bindings "^1.5.0" + bip39 "^2.4.2" + ethereum-protocol "^1.0.1" + ethereumjs-tx "^1.0.0" + ethereumjs-util "^6.1.0" + ethereumjs-wallet "^0.6.3" + web3 "1.2.1" + web3-provider-engine "https://github.com/trufflesuite/provider-engine#web3-one" + "@types/babel__core@^7.1.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f" - integrity sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg== + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" + integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1503,9 +1561,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" - integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" @@ -1518,37 +1576,97 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" - integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" + integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== dependencies: "@babel/types" "^7.3.0" -"@types/base-x@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/base-x/-/base-x-3.0.0.tgz#a1365259d1d3fa3ff973ab543192a6bdd4cb2f90" - integrity sha512-vnqSlpsv9uFX5/z8GyKWAfWHhLGJDBkrgRRsnxlsX23DHOlNyqP/eHQiv4TwnYcZULzQIxaWA/xRWU9Dyy4qzw== +"@types/bchaddrjs@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@types/bchaddrjs/-/bchaddrjs-0.4.0.tgz#f3d29ab56096c9d7105b5ccbc69969d11426e087" + integrity sha512-Nvv3haWpXNWYfKasVoEp3VBgVsBTLTh45anhHUN8xVUPhn4ErU3FPS5AEcZtACWc5ICGUxbaiLTWOnwDkwYF1Q== + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4", "@types/bn.js@^4.11.5": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== dependencies: "@types/node" "*" -"@types/bn.js@^4.11.4": - version "4.11.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" - integrity sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng== +"@types/bs58@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37" + integrity sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA== + dependencies: + base-x "^3.0.6" + +"@types/cbor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-2.0.0.tgz#c627afc2ee22f23f2337fecb34628a4f97c6afbb" + integrity sha1-xievwu4i8j8jN/7LNGKKT5fGr7s= dependencies: "@types/node" "*" -"@types/bs58@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.0.tgz#baec75cb007b419ede3ec6b3410d2c8f14c92fc5" - integrity sha512-gYX+MHD4G/R+YGYwdhG5gbJj4LsEQGr3Vg6gVDAbe7xC5Bn8dNNG2Lpo6uDX/rT5dE7VBj0rGEFuV8L0AEx4Rg== +"@types/chai@^4.2.6": + version "4.2.8" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.8.tgz#c8d645506db0d15f4aafd4dfa873f443ad87ea59" + integrity sha512-U1bQiWbln41Yo6EeHMr+34aUhvrMVyrhn9lYfPSpLTCrZlGxU4Rtn1bocX+0p2Fc/Jkd2FanCEXdw0WNfHHM0w== + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/d3-geo@*": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.11.1.tgz#e96ec91f16221d87507fec66b2cc889f52d2493e" + integrity sha512-Ox8WWOG3igDRoep/dNsGbOiSJYdUG3ew/6z0ETvHyAtXZVBjOE0S96zSSmzgl0gqQ3RdZjn2eeJOj9oRcMZPkQ== + dependencies: + "@types/geojson" "*" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/ethereum-protocol@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/ethereum-protocol/-/ethereum-protocol-1.0.0.tgz#416e3827d5fdfa4658b0045b35a008747871b271" + integrity sha512-3DiI3Zxf81CgX+VhxNNFJBv/sfr1BFBKQK2sQ85hU9FwWJJMWV5gRDV79OUNShiwj3tYYIezU94qpucsb3dThQ== dependencies: - "@types/base-x" "*" + bignumber.js "7.2.1" + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/filesize@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/filesize/-/filesize-5.0.0.tgz#c6c252b5b514a5d1948bc9bcb76f4f780570c481" + integrity sha512-zgn1Kmm6VfqruG9STpwpZiSnpzHjF9hlvHVw+5hhM20xRCOIgjxnXJxOoLuZ/aWS6v/M5d6fvXFbbVQfBe4cMg== + dependencies: + filesize "*" + +"@types/geojson@*": + version "7946.0.7" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" + integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" "@types/history@*": - version "4.7.2" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.2.tgz#0e670ea254d559241b6eeb3894f8754991e73220" - integrity sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q== + version "4.7.5" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.5.tgz#527d20ef68571a4af02ed74350164e7a67544860" + integrity sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw== "@types/hoist-non-react-statics@^3.3.0": version "3.3.1" @@ -1564,9 +1682,9 @@ integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== "@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" - integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" @@ -1578,37 +1696,52 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest-diff@*": - version "20.0.1" - resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" - integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== - -"@types/jest@^24.0.13": - version "24.0.13" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.13.tgz#10f50b64cb05fb02411fbba49e9042a3a11da3f9" - integrity sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww== +"@types/jest@^24.0.23": + version "24.9.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" + integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== dependencies: - "@types/jest-diff" "*" + jest-diff "^24.3.0" + +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.0.tgz#d11813b9c0ff8aaca29f04cbc12817f4c7d656e5" - integrity sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg== + version "13.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.0.tgz#b417deda18cf8400f278733499ad5547ed1abec4" + integrity sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ== "@types/node@^10.12.18", "@types/node@^10.3.2": - version "10.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.6.tgz#9cbfcb62c50947217f4d88d4d274cc40c22625a9" - integrity sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg== + version "10.17.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.14.tgz#b6c60ebf2fb5e4229fdd751ff9ddfae0f5f31541" + integrity sha512-G0UmX5uKEmW+ZAhmZ6PLTQ5eu/VPaT+d/tdLd5IFsKRPcbe6lPxocBtcYBFSaLaCW8O60AX90e91Nsp8lVHCNw== -"@types/node@^12.0.4": - version "12.0.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.4.tgz#46832183115c904410c275e34cf9403992999c32" - integrity sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw== +"@types/node@^12.12.14", "@types/node@^12.12.21", "@types/node@^12.6.1": + version "12.12.26" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.26.tgz#213e153babac0ed169d44a6d919501e68f59dea9" + integrity sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prop-types@*": - version "15.7.1" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6" - integrity sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg== + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== "@types/q@^1.5.1": version "1.5.2" @@ -1622,52 +1755,68 @@ dependencies: query-string "*" -"@types/react-dom@^16.8.4": - version "16.8.4" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.4.tgz#7fb7ba368857c7aa0f4e4511c4710ca2c5a12a88" - integrity sha512-eIRpEW73DCzPIMaNBDP5pPIpK1KXyZwNgfxiVagb5iGiz6da+9A5hslSX6GAQKdO7SayVCS/Fr2kjqprgAvkfA== +"@types/react-dom@*", "@types/react-dom@^16.9.4": + version "16.9.5" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7" + integrity sha512-BX6RQ8s9D+2/gDhxrj8OW+YD4R+8hj7FEM/OJHGNR0KipE1h1mSsf39YeyC81qafkq+N3rU3h3RFbLSwE5VqUg== dependencies: "@types/react" "*" -"@types/react-redux@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.0.9.tgz#4825ee2872c44768916304b6bb8df5b46d443b88" - integrity sha512-fMVX9SneWWw68d/JoeNUh6hj42kx2G30YhPdCYJTOv3xqbJ1xzIz6tEM/xzi7nBvpNbwZkSa9TMsV06kWOFIIg== +"@types/react-redux@^7.1.5": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.7.tgz#12a0c529aba660696947384a059c5c6e08185c7a" + integrity sha512-U+WrzeFfI83+evZE2dkZ/oF/1vjIYgqrb5dGgedkqVV8HEfDFujNgWCwHL89TDuWKb47U0nTBT6PLGq4IIogWg== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" hoist-non-react-statics "^3.3.0" redux "^4.0.0" -"@types/react-router-dom@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-4.3.3.tgz#7837e3e9fefbc84a8f6c8a51dca004f4e83e94e3" - integrity sha512-xj0DmFjgvAqRfh/kJPO7apD5G30yPQe+8slu/dugioQOkdKpyzc4Fgk4hoTelm6CSHz7pI2PPsW5+Y6GRBF2zw== +"@types/react-router-dom@^5.1.3": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.3.tgz#b5d28e7850bd274d944c0fbbe5d57e6b30d71196" + integrity sha512-pCq7AkOvjE65jkGS5fQwQhvUp4+4PVD9g39gXLZViP2UqFiFzsEpB3PKf0O6mdbKsewSK8N14/eegisa/0CwnA== dependencies: "@types/history" "*" "@types/react" "*" "@types/react-router" "*" "@types/react-router@*": - version "4.4.5" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-4.4.5.tgz#1166997dc7eef2917b5ebce890ebecb32ee5c1b3" - integrity sha512-12+VOu1+xiC8RPc9yrgHCyLI79VswjtuqeS2gPrMcywH6tkc8rGIUhs4LaL3AJPqo5d+RPnfRpNKiJ7MK2Qhcg== + version "5.1.4" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.4.tgz#7d70bd905543cb6bcbdcc6bd98902332054f31a6" + integrity sha512-PZtnBuyfL07sqCJvGg3z+0+kt6fobc/xmle08jBiezLS8FrmGeiGkJnuxL/8Zgy9L83ypUhniV5atZn/L8n9MQ== dependencies: "@types/history" "*" "@types/react" "*" -"@types/react@*": - version "16.8.16" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.16.tgz#2bf980b4fb29cceeb01b2c139b3e185e57d3e08e" - integrity sha512-A0+6kS6zwPtvubOLiCJmZ8li5bm3wKIkoKV0h3RdMDOnCj9cYkUnj3bWbE03/lcICdQmwBmUfoFiHeNhbFiyHQ== +"@types/react-select@^3.0.8": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-3.0.10.tgz#c32e0832d368756e6db53ccedf64f767728545d4" + integrity sha512-oUHXqvbkRhC07q5JjeY6hE+NUqgUM6CyaRXEKYPvMCBqUOuLnYltyhiNx6Jpb+iFpYtNHSQtF4dNJfMdMooKoQ== dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" + "@types/react" "*" + "@types/react-dom" "*" + "@types/react-transition-group" "*" + +"@types/react-simple-maps@^0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/react-simple-maps/-/react-simple-maps-0.12.2.tgz#b139d7f909e2edee6f54b53c4adce9251ebf24fb" + integrity sha512-dmALUc5CDy3+76sn0ZF2mcdWN0VH9d/F4P5fpEB0vdrJIw1KJjHK8kumeHsyXiktz4joBUWcxAZOTfifmj82fQ== + dependencies: + "@types/d3-geo" "*" + "@types/react" "*" -"@types/react@^16.8.19": - version "16.8.19" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.19.tgz#629154ef05e2e1985cdde94477deefd823ad9be3" - integrity sha512-QzEzjrd1zFzY9cDlbIiFvdr+YUmefuuRYrPxmkwG0UQv5XF35gFIi7a95m1bNVcFU0VimxSZ5QVGSiBmlggQXQ== +"@types/react-transition-group@*", "@types/react-transition-group@4.2": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.2.3.tgz#4924133f7268694058e415bf7aea2d4c21131470" + integrity sha512-Hk8jiuT7iLOHrcjKP/ZVSyCNXK73wJAUz60xm0mVhiRujrdiI++j4duLiL282VGxwAgxetHQFfqA29LgEeSkFA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^16.9.15": + version "16.9.19" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.19.tgz#c842aa83ea490007d29938146ff2e4d9e4360c40" + integrity sha512-LJV97//H+zqKWMms0kvxaKYJDG05U2TtQB3chRLF8MPNs+MQh/H1aGlyDUxjaHvu08EAGerdX2z4LTBc7ns77A== dependencies: "@types/prop-types" "*" csstype "^2.2.0" @@ -1677,64 +1826,91 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== -"@types/underscore@^1.8.18": - version "1.8.18" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.8.18.tgz#025371cfe062439aaa088d2b64af87cbcfe3c2b7" - integrity sha512-mXQ8u416FWMPjp2zWrcVmOZtzKQM6IeyVcuE+RGF/04JLBrMjfnmNKn74VN8fIkFzU97TpzkP0ny0p0h65eC7w== +"@types/underscore@^1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.9.4.tgz#22d1a3e6b494608e430221ec085fa0b7ccee7f33" + integrity sha512-CjHWEMECc2/UxOZh0kpiz3lEyX2Px3rQS9HzD20lxMvx571ivOBQKeLnqEjxUY0BMgp6WJWo/pQLRBwMW5v4WQ== -"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" - integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== +"@types/web3-provider-engine@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@types/web3-provider-engine/-/web3-provider-engine-14.0.0.tgz#43adc3b39dc9812b82aef8cd2d66577665ad59b0" + integrity sha512-yHr8mX2SoX3JNyfqdLXdO1UobsGhfiwSgtekbVxKLQrzD7vtpPkKbkIVsPFOhvekvNbPsCmDyeDCLkpeI9gSmA== + dependencies: + "@types/ethereum-protocol" "*" -"@types/vfile-message@*": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-1.0.1.tgz#e1e9895cc6b36c462d4244e64e6d0b6eaf65355a" - integrity sha512-mlGER3Aqmq7bqR1tTTIVHq8KSAFFRyGbrxuM8C/H82g6k7r2fS+IMEkIu3D7JHzG10NvPdR8DNx0jr0pwpp4dA== +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" + integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== dependencies: - "@types/node" "*" - "@types/unist" "*" + "@types/yargs-parser" "*" -"@types/vfile@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" - integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.0.tgz#bf743448a4633e4b52bee0c40148ba072ab3adbd" + integrity sha512-u7IcQ9qwsB6U806LupZmINRnQjC+RJyv36sV/ugaFWMHTbFm/hlLTRx3gGYJgHisxcGSTnf+I/fPDieRMhPSQQ== dependencies: - "@types/node" "*" - "@types/unist" "*" - "@types/vfile-message" "*" + "@typescript-eslint/experimental-utils" "2.19.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" -"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": - version "12.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" - integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== +"@typescript-eslint/experimental-utils@2.19.0": + version "2.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.0.tgz#d5ca732f22c009e515ba09fcceb5f2127d841568" + integrity sha512-zwpg6zEOPbhB3+GaQfufzlMUOO6GXCNZq6skk+b2ZkZAIoBhVoanWK255BS1g5x9bMwHpLhX0Rpn5Fc3NdCZdg== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.19.0" + eslint-scope "^5.0.0" -"@typescript-eslint/eslint-plugin@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.6.0.tgz#a5ff3128c692393fb16efa403ec7c8a5593dab0f" - integrity sha512-U224c29E2lo861TQZs6GSmyC0OYeRNg6bE9UVIiFBxN2MlA0nq2dCrgIVyyRbC05UOcrgf2Wk/CF2gGOPQKUSQ== +"@typescript-eslint/parser@^2.10.0": + version "2.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.19.0.tgz#912160d9425395d09857dcd5382352bc98be11ae" + integrity sha512-s0jZoxAWjHnuidbbN7aA+BFVXn4TCcxEVGPV8lWMxZglSs3NRnFFAlL+aIENNmzB2/1jUJuySi6GiM6uACPmpg== dependencies: - "@typescript-eslint/parser" "1.6.0" - "@typescript-eslint/typescript-estree" "1.6.0" - requireindex "^1.2.0" - tsutils "^3.7.0" + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.19.0" + "@typescript-eslint/typescript-estree" "2.19.0" + eslint-visitor-keys "^1.1.0" -"@typescript-eslint/parser@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.6.0.tgz#f01189c8b90848e3b8e45a6cdad27870529d1804" - integrity sha512-VB9xmSbfafI+/kI4gUK3PfrkGmrJQfh0N4EScT1gZXSZyUxpsBirPL99EWZg9MmPG0pzq/gMtgkk7/rAHj4aQw== +"@typescript-eslint/typescript-estree@2.19.0": + version "2.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.0.tgz#6bd7310b9827e04756fe712909f26956aac4b196" + integrity sha512-n6/Xa37k0jQdwpUszffi19AlNbVCR0sdvCs3DmSKMD7wBttKY31lhD2fug5kMD91B2qW4mQldaTEc1PEzvGu8w== dependencies: - "@typescript-eslint/typescript-estree" "1.6.0" - eslint-scope "^4.0.0" - eslint-visitor-keys "^1.0.0" + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + +"@web3-js/scrypt-shim@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz#0bf7529ab6788311d3e07586f7d89107c3bea2cc" + integrity sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw== + dependencies: + scryptsy "^2.1.0" + semver "^6.3.0" -"@typescript-eslint/typescript-estree@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz#6cf43a07fee08b8eb52e4513b428c8cdc9751ef0" - integrity sha512-A4CanUwfaG4oXobD5y7EXbsOHjCwn8tj1RDd820etpPAjH+Icjc2K9e/DQM1Hac5zH2BSy+u6bjvvF2wwREvYA== +"@web3-js/websocket@^1.0.29": + version "1.0.30" + resolved "https://registry.yarnpkg.com/@web3-js/websocket/-/websocket-1.0.30.tgz#9ea15b7b582cf3bf3e8bc1f4d3d54c0731a87f87" + integrity sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA== dependencies: - lodash.unescape "4.0.1" - semver "5.5.0" + debug "^2.2.0" + es5-ext "^0.10.50" + nan "^2.14.0" + typedarray-to-buffer "^3.1.5" + yaeti "^0.0.6" "@webassemblyjs/ast@1.8.5": version "1.8.5" @@ -1892,10 +2068,23 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +JSONStream@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" - integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== abbrev@1: version "1.1.1" @@ -1916,7 +2105,7 @@ abstract-leveldown@~2.7.1: dependencies: xtend "~4.0.0" -accepts@~1.3.4, accepts@~1.3.5: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -1924,77 +2113,110 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.24" negotiator "0.6.2" -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - acorn-globals@^4.1.0, acorn-globals@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" - integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn-jsx@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== acorn-walk@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" - integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.5, acorn@^6.0.7: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== -address@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" - integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== +acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== -address@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" - integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ== +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -agent-base@^4.1.0: +aes-js@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" - integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: + version "6.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" + integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" @@ -2009,6 +2231,13 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= + dependencies: + string-width "^2.0.0" + ansi-align@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" @@ -2021,11 +2250,18 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -2046,6 +2282,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -2058,7 +2299,15 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -any-promise@^1.3.0: +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +any-promise@1.3.0, any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -2071,6 +2320,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -2099,6 +2356,11 @@ aria-query@^3.0.0: ast-types-flow "0.0.7" commander "^2.11.0" +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -2119,11 +2381,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -2139,23 +2396,14 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" array-union@^1.0.1: version "1.0.2" @@ -2174,12 +2422,20 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.3, asap@~2.0.6: +asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -2205,13 +2461,26 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: +assert@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= dependencies: util "0.10.3" +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -2245,48 +2514,44 @@ async-foreach@^0.1.3: integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^1.4.2, async@^1.5.2: +async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: - lodash "^4.17.11" + lodash "^4.17.14" asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1: +atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.4.9: - version "9.5.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357" - integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ== +autoprefixer@^9.6.1: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: - browserslist "^4.5.4" - caniuse-lite "^1.0.30000957" + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.14" - postcss-value-parser "^3.3.1" - -await-semaphore@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" - integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== + postcss "^7.0.26" + postcss-value-parser "^4.0.2" aws-sign2@~0.7.0: version "0.7.0" @@ -2294,24 +2559,32 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== -axios@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" - integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== dependencies: follow-redirects "1.5.10" is-buffer "^2.0.2" +axios@^0.19.0: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + axobject-query@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" - integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== + version "2.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.1.tgz#2a3b1271ec722d48a4cd4b3fcc20c853326a49a7" + integrity sha512-lF98xa/yvy6j3fBHAgQXIYl+J4eZadOSqsPojemUqClzNbBV38wWGpUbQbVEyf4eUF5yF7eHmGgGA2JiHyjeqw== dependencies: - ast-types-flow "0.0.7" + "@babel/runtime" "^7.7.4" + "@babel/runtime-corejs3" "^7.7.4" babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" @@ -2347,17 +2620,17 @@ babel-core@^6.0.14, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" -babel-eslint@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" - integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== +babel-eslint@10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" + integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" - eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" babel-extract-comments@^1.0.0: version "1.0.0" @@ -2493,28 +2766,28 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" - integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== dependencies: - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" "@types/babel__core" "^7.1.0" babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.6.0" + babel-preset-jest "^24.9.0" chalk "^2.4.2" slash "^2.0.0" -babel-loader@8.0.5: - version "8.0.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" - integrity sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw== +babel-loader@8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== dependencies: find-cache-dir "^2.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" - util.promisify "^1.0.0" + pify "^4.0.1" babel-messages@^6.23.0: version "6.23.0" @@ -2530,22 +2803,22 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-dynamic-import-node@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz#c0adfb07d95f4a4495e9aaac6ec386c4d7c2524e" - integrity sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA== +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== dependencies: object.assign "^4.1.0" -babel-plugin-emotion@^10.0.9: - version "10.0.9" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.9.tgz#04a0404d5a4084d5296357a393d344c0f8303ae4" - integrity sha512-IfWP12e9/wHtWHxVTzD692Nbcmrmcz2tip7acp6YUqtrP7slAyr5B+69hyZ8jd55GsyNSZwryNnmuDEVe0j+7w== +babel-plugin-emotion@^10.0.27: + version "10.0.27" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.27.tgz#59001cf5de847c1d61f2079cd906a90a00d3184f" + integrity sha512-SUNYcT4FqhOqvwv0z1oeYhqgheU8qrceLojuHyX17ngo7WtWqN5I9l3IGHzf21Xraj465CVzF4IvOlAF+3ed0A== dependencies: "@babel/helper-module-imports" "^7.0.0" - "@emotion/hash" "0.7.1" - "@emotion/memoize" "0.7.1" - "@emotion/serialize" "^0.11.6" + "@emotion/hash" "0.7.4" + "@emotion/memoize" "0.7.4" + "@emotion/serialize" "^0.11.15" babel-plugin-macros "^2.0.0" babel-plugin-syntax-jsx "^6.18.0" convert-source-map "^1.5.0" @@ -2553,53 +2826,36 @@ babel-plugin-emotion@^10.0.9: find-root "^1.1.0" source-map "^0.5.7" -babel-plugin-emotion@^9.2.11: - version "9.2.11" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-9.2.11.tgz#319c005a9ee1d15bb447f59fe504c35fd5807728" - integrity sha512-dgCImifnOPPSeXod2znAmgc64NhaaOjGEHROR/M+lmStb3841yK1sgaDYAYMnlvWNz8GnpwIPN0VmNpbWYZ+VQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@emotion/babel-utils" "^0.6.4" - "@emotion/hash" "^0.6.2" - "@emotion/memoize" "^0.6.1" - "@emotion/stylis" "^0.7.0" - babel-plugin-macros "^2.0.0" - babel-plugin-syntax-jsx "^6.18.0" - convert-source-map "^1.5.0" - find-root "^1.1.0" - mkdirp "^0.5.1" - source-map "^0.5.7" - touch "^2.0.1" - babel-plugin-istanbul@^5.1.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" - integrity sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== dependencies: + "@babel/helper-plugin-utils" "^7.0.0" find-up "^3.0.0" istanbul-lib-instrument "^3.3.0" test-exclude "^5.2.3" -babel-plugin-jest-hoist@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" - integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@2.5.1, babel-plugin-macros@^2.0.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz#4a119ac2c2e19b458c259b9accd7ee34fd57ec6f" - integrity sha512-xN3KhAxPzsJ6OQTktCanNpIFnnMsCV+t8OloKxIL72D6+SUZYFn9qfklPgef5HyyDtzYZqqb+fs1S12+gQY82Q== +babel-plugin-macros@2.8.0, babel-plugin-macros@^2.0.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: - "@babel/runtime" "^7.4.2" - cosmiconfig "^5.2.0" - resolve "^1.10.0" + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -babel-plugin-named-asset-import@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.2.tgz#20978ed446b8e1bf4a2f42d0a94c0ece85f75f4f" - integrity sha512-CxwvxrZ9OirpXQ201Ec57OmGhmI8/ui/GwTDy0hSp6CmRvgRC0pSair6Z04Ck+JStA0sMPZzSJ3uE4n17EXpPQ== +babel-plugin-named-asset-import@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" + integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA== babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" @@ -2898,36 +3154,31 @@ babel-preset-env@^1.7.0: invariant "^2.2.2" semver "^5.3.0" -babel-preset-jest@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" - integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== dependencies: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.6.0" - -babel-preset-react-app@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.0.0.tgz#703108142bc9dd7173bde6a1a0138a762abc76f9" - integrity sha512-YVsDA8HpAKklhFLJtl9+AgaxrDaor8gGvDFlsg1ByOS0IPGUovumdv4/gJiAnLcDmZmKlH6+9sVOz4NVW7emAg== - dependencies: - "@babel/core" "7.4.3" - "@babel/plugin-proposal-class-properties" "7.4.0" - "@babel/plugin-proposal-decorators" "7.4.0" - "@babel/plugin-proposal-object-rest-spread" "7.4.3" - "@babel/plugin-syntax-dynamic-import" "7.2.0" - "@babel/plugin-transform-classes" "7.4.3" - "@babel/plugin-transform-destructuring" "7.4.3" - "@babel/plugin-transform-flow-strip-types" "7.4.0" - "@babel/plugin-transform-react-constant-elements" "7.2.0" - "@babel/plugin-transform-react-display-name" "7.2.0" - "@babel/plugin-transform-runtime" "7.4.3" - "@babel/preset-env" "7.4.3" - "@babel/preset-react" "7.0.0" - "@babel/preset-typescript" "7.3.3" - "@babel/runtime" "7.4.3" - babel-plugin-dynamic-import-node "2.2.0" - babel-plugin-macros "2.5.1" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-react-app@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.1.tgz#d1ceb47cbe48b285fdd5c562c54c432ed5a41e0e" + integrity sha512-YkWP2UwY//TLltNlEBRngDOrYhvSLb+CA330G7T9M5UhGEMWe+JK/8IXJc5p2fDTSfSiETf+PY0+PYXFMix81Q== + dependencies: + "@babel/core" "7.8.4" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-transform-flow-strip-types" "7.8.3" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.8.3" + "@babel/preset-env" "7.8.4" + "@babel/preset-react" "7.8.3" + "@babel/preset-typescript" "7.8.3" + "@babel/runtime" "7.8.4" + babel-plugin-macros "2.8.0" babel-plugin-transform-react-remove-prop-types "0.4.24" babel-register@^6.26.0: @@ -2987,11 +3238,6 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babelify@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" - integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== - babelify@^7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" @@ -3012,27 +3258,22 @@ backoff@^2.5.0: dependencies: precond "0.2" -bail@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz#63cfb9ddbac829b02a3128cd53224be78e6c21a3" - integrity sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg== - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-x@^3.0.2, base-x@^3.0.4: - version "3.0.5" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.5.tgz#d3ada59afed05b921ab581ec3112e6444ba0795a" - integrity sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA== +base-x@^3.0.2, base-x@^3.0.4, base-x@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.7.tgz#1c5a7fafe8f66b4114063e8da102799d4e7c408f" + integrity sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw== dependencies: safe-buffer "^5.0.1" base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== base@^0.11.1: version "0.11.2" @@ -3052,6 +3293,14 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= +bchaddrjs@^0.4.4: + version "0.4.5" + resolved "https://registry.yarnpkg.com/bchaddrjs/-/bchaddrjs-0.4.5.tgz#4b8ca28d7b5f2e1d0e5056b40021be0405f701fd" + integrity sha512-ZmGjcI7KyleD39YkNqm02YhSEwRH1IPxcQ1eKgQHOQtnaJB1JN5ZymtNrzxFPKE2Cgza2yXBETgq99+0fknq/A== + dependencies: + bs58check "^2.1.2" + cashaddrjs "^0.3.9" + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -3059,11 +3308,36 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bech32@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-0.0.3.tgz#736747c4a6531c5d8937d0400498de30e93b2f9c" + integrity sha512-O+K1w8P/aAOLcYwwQ4sbiPYZ51ZIW95lnS4/6nE8Aib/z+OOddQIIPdu2qi94qGDp4HhYy/wJotttXKkak1lXg== + +bech32@=1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.3.tgz#bd47a8986bbb3eec34a56a097a84b8d3e9a2dfcd" + integrity sha512-yuVFUvrNcoJi0sv5phmqc6P+Fl1HjRDRNOOkHY2X/3LBy2bIGNSFx4fZ95HMaXHupuS7cZR15AsvtmCIF4UEyg== + +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bigi@^1.1.0, bigi@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" + integrity sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU= + +bignumber.js@7.2.1, bignumber.js@^7.2.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" + integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== + bignumber.js@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" @@ -3074,20 +3348,124 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -bindings@^1.2.1: +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.2.1, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" -bip66@^1.1.3: +bip39@^2.4.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" + integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +bip66@^1.1.0, bip66@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= dependencies: safe-buffer "^5.0.1" +bitcoin-ops@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz#e45de620398e22fd4ca6023de43974ff42240278" + integrity sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow== + +bitcore-lib-cash@^8.13.2: + version "8.15.0" + resolved "https://registry.yarnpkg.com/bitcore-lib-cash/-/bitcore-lib-cash-8.15.0.tgz#359f3a60cda904068f25d1e89548e5775debd9ab" + integrity sha512-mLXOg6O0nqWXaJDIAibYWf/38KqoIzh9SRQIBkfm7vKn4ypqUMPB3dNXMTqABzrjxgGjPUw6T0IlyiIj8J//NQ== + dependencies: + bitcore-lib "^8.15.0" + bn.js "=4.11.8" + bs58 "^4.0.1" + buffer-compare "=1.1.1" + elliptic "=6.4.0" + inherits "=2.0.1" + lodash "=4.17.15" + +bitcore-lib-zcash@zcash-hackworks/bitcore-lib-zcash: + version "0.13.19" + resolved "https://codeload.github.com/zcash-hackworks/bitcore-lib-zcash/tar.gz/e97ae1dd2e9f14d6076d5e5429c75d8965afa4ab" + dependencies: + bn.js "=2.0.4" + bs58 "=2.0.0" + buffer-compare "=1.0.0" + elliptic "=3.0.3" + inherits "=2.0.1" + lodash "=3.10.1" + +bitcore-lib@^8.13.2, bitcore-lib@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/bitcore-lib/-/bitcore-lib-8.15.0.tgz#5e379120fc833624484443783322e3300dfb757e" + integrity sha512-OhAdINElZa/Q63W23xNg+0HZfX0xHOp10UnJygpUZgHv15pRVfgPoyxdMIkQNuH/dBgF9o2Y9h4w2Z7qwqdKHg== + dependencies: + bech32 "=1.1.3" + bn.js "=4.11.8" + bs58 "^4.0.1" + buffer-compare "=1.1.1" + elliptic "=6.4.0" + inherits "=2.0.1" + lodash "=4.17.15" + +bitgo-utxo-lib@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/bitgo-utxo-lib/-/bitgo-utxo-lib-1.8.0.tgz#22b8ffb8dccf4fe74b6815407f1c1ebf1f4ad82f" + integrity sha512-6FQhml+7PKkR70cF6Kkj0JDKWhJb6czDcxJjyaq12fSKhn1hHjQCS4TrHYVmJuf4JH2xuaANX2Jx6exanTT8fQ== + dependencies: + bech32 "0.0.3" + bigi "^1.4.0" + bip66 "^1.1.0" + bitcoin-ops "^1.3.0" + blake2b "https://github.com/BitGo/blake2b#6268e6dd678661e0acc4359e9171b97eb1ebf8ac" + bs58check "^2.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.3" + debug "~3.1.0" + ecurve "^1.0.0" + merkle-lib "^2.0.10" + pushdata-bitcoin "^1.0.1" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.0.4" + wif "^2.0.1" + optionalDependencies: + secp256k1 "^3.5.2" + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +"blake2b-wasm@https://github.com/BitGo/blake2b-wasm#193cdb71656c1a6c7f89b05d0327bb9b758d071b": + version "2.0.0" + resolved "https://github.com/BitGo/blake2b-wasm#193cdb71656c1a6c7f89b05d0327bb9b758d071b" + dependencies: + nanoassert "^1.0.0" + +"blake2b@https://github.com/BitGo/blake2b#6268e6dd678661e0acc4359e9171b97eb1ebf8ac": + version "2.1.3" + resolved "https://github.com/BitGo/blake2b#6268e6dd678661e0acc4359e9171b97eb1ebf8ac" + dependencies: + blake2b-wasm "https://github.com/BitGo/blake2b-wasm#193cdb71656c1a6c7f89b05d0327bb9b758d071b" + nanoassert "^1.0.0" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -3095,43 +3473,37 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.5.3: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== - -bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== +bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@4.11.6: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= -bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.3, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0, bn.js@^4.8.0: +bn.js@4.11.8, bn.js@=4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" +bn.js@=2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-2.0.4.tgz#220a7cd677f7f1bfa93627ff4193776fe7819480" + integrity sha1-Igp81nf38b+pNif/QZN3b+eBlIA= + +bn.js@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-2.2.0.tgz#12162bc2ae71fc40a5626c33438f3a875cd37625" + integrity sha1-EhYrwq5x/EClYmwzQ486h1zTdiU= + +bn.js@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" + integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== -body-parser@^1.16.0: +body-parser@1.19.0, body-parser@^1.16.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -3164,6 +3536,19 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + boxen@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" @@ -3202,6 +3587,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -3258,14 +3650,6 @@ browserify-rsa@^4.0.0: bn.js "^4.1.0" randombytes "^2.0.1" -browserify-sha3@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.4.tgz#086c47b8c82316c9d47022c26185954576dd8e26" - integrity sha1-CGxHuMgjFsnUcCLCYYWVRXbdjiY= - dependencies: - js-sha3 "^0.6.1" - safe-buffer "^5.1.1" - browserify-sign@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" @@ -3286,14 +3670,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.5.4.tgz#166c4ecef3b51737a42436ea8002aeea466ea2c7" - integrity sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag== +browserslist@4.8.6, browserslist@^4.0.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5: + version "4.8.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e" + integrity sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg== dependencies: - caniuse-lite "^1.0.30000955" - electron-to-chromium "^1.3.122" - node-releases "^1.1.13" + caniuse-lite "^1.0.30001023" + electron-to-chromium "^1.3.341" + node-releases "^1.1.47" browserslist@^3.2.6: version "3.2.8" @@ -3303,42 +3687,71 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.5.4: - version "4.5.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.5.6.tgz#ea42e8581ca2513fa7f371d4dd66da763938163d" - integrity sha512-o/hPOtbU9oX507lIqon+UvPYqpx3mHc8cV3QemSBTXwkG8gSQSK6UKvXcE/DcleU3+A59XTUHyCvZ5qGy8xVAg== - dependencies: - caniuse-lite "^1.0.30000963" - electron-to-chromium "^1.3.127" - node-releases "^1.1.17" +bs58@=2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.0.tgz#72b713bed223a0ac518bbda0e3ce3f4817f39eb5" + integrity sha1-crcTvtIjoKxRi72g484/SBfznrU= -browserslist@^4.1.1, browserslist@^4.4.2: - version "4.6.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.1.tgz#ee5059b1aec18cbec9d055d6cb5e24ae50343a9b" - integrity sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ== - dependencies: - caniuse-lite "^1.0.30000971" - electron-to-chromium "^1.3.137" - node-releases "^1.1.21" +bs58@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d" + integrity sha1-VZCNWPGYKrogCPob7Y+RmYopv40= -bs58@^4.0.1: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= dependencies: base-x "^3.0.2" -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= +bs58check@<3.0.0, bs58check@^2.0.0, bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-compare@=1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-compare/-/buffer-compare-1.0.0.tgz#acaa7a966e98eee9fae14b31c39a5f158fb3c4a2" + integrity sha1-rKp6lm6Y7un64Usxw5pfFY+zxKI= + +buffer-compare@=1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-compare/-/buffer-compare-1.1.1.tgz#5be7be853af89198d1f4ddc090d1d66a48aef596" + integrity sha1-W+e+hTr4kZjR9N3AkNHWakiu9ZY= + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= buffer-from@^1.0.0: version "1.1.1" @@ -3360,10 +3773,18 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= +buffer@5.4.3, buffer@^5.0.5, buffer@^5.2.1: + version "5.4.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" + integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -3379,6 +3800,11 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -3389,26 +3815,51 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.0.2: - version "11.3.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" - integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== +cacache@^12.0.0, cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: - bluebird "^3.5.3" + bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" - glob "^7.1.3" + glob "^7.1.4" graceful-fs "^4.1.15" + infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" - rimraf "^2.6.2" + rimraf "^2.6.3" ssri "^6.0.1" unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3425,16 +3876,16 @@ cache-base@^1.0.1: unset-value "^1.0.0" cacheable-request@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.0.0.tgz#4a1727414e02ac4af82560c4da1b61daa3fa2b63" - integrity sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q== + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: clone-response "^1.0.2" - get-stream "^4.0.0" + get-stream "^5.1.0" http-cache-semantics "^4.0.0" keyv "^3.0.0" - lowercase-keys "^1.0.1" - normalize-url "^3.1.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" responselike "^1.0.2" call-me-maybe@^1.0.1: @@ -3466,7 +3917,7 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@3.0.x: +camel-case@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= @@ -3482,6 +3933,16 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -3492,16 +3953,11 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: +camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -3512,15 +3968,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000963: - version "1.0.30000966" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000966.tgz#f3c6fefacfbfbfb981df6dfa68f2aae7bff41b64" - integrity sha512-qqLQ/uYrpZmFhPY96VuBkMEo8NhVFBZ9y/Bh+KnvGzGJ5I8hvpIaWlF2pw5gqe4PLAL+ZjsPgMOvoXSpX21Keg== - -caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000955, caniuse-lite@^1.0.30000971: - version "1.0.30000971" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13" - integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023: + version "1.0.30001025" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001025.tgz#30336a8aca7f98618eb3cf38e35184e13d4e5fe6" + integrity sha512-SKyFdHYfXUZf5V85+PJgLYyit27q4wgvZuf8QTOk1osbypcROihMBlx9GRar2/pIcKH2r4OehdlBr9x6PXetAQ== capture-exit@^2.0.0: version "2.0.0" @@ -3529,29 +3980,57 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -case-sensitive-paths-webpack-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e" - integrity sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g== +capture-stack-trace@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -ccount@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.3.tgz#f1cec43f332e2ea5a569fd46f9f5bde4e6102aff" - integrity sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw== +cashaddrjs@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/cashaddrjs/-/cashaddrjs-0.3.9.tgz#e98078cf61061e0c5c865a95924d06a6b9ced020" + integrity sha512-2FyYuNnIICPsEZvuC0NWNQgw+OFCpGdUyVl9Jmj3sunyH8cHfkaZq7EADKngEO/pI2OOwDvVMQN8k62xev7+aw== + dependencies: + big-integer "1.6.36" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +cbor@^4.1.5: + version "4.3.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-4.3.0.tgz#0217c1cadd067d9112f44336dca07e72020bb804" + integrity sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + bignumber.js "^9.0.0" + commander "^3.0.0" + json-text-sequence "^0.1" + nofilter "^1.0.3" + +chai@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@3.0.0, chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" @@ -3564,15 +4043,24 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chart.js@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.8.0.tgz#b703b10d0f4ec5079eaefdcd6ca32dc8f826e0e9" - integrity sha512-Di3wUL4BFvqI5FB5K26aQ+hvWh8wnP9A3DWGvXHVkO13D3DSnaSsdZx29cXlEsYKVkn1E2az+ZYFS4t0zi8x0w== +chart.js@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.3.tgz#ae3884114dafd381bc600f5b35a189138aac1ef7" + integrity sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw== dependencies: chartjs-color "^2.1.0" moment "^2.10.2" @@ -3585,12 +4073,17 @@ chartjs-color-string@^0.6.0: color-name "^1.0.0" chartjs-color@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.3.0.tgz#0e7e1e8dba37eae8415fd3db38bf572007dd958f" - integrity sha512-hEvVheqczsoHD+fZ+tfPUE+1+RbV6b+eksp2LwAhwRTVXEjCSEavvk+Hg3H6SZfGlPh/UfmWKGIvZbtobOEm3g== + version "2.4.1" + resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz#6118bba202fe1ea79dd7f7c0f9da93467296c3b0" + integrity sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w== dependencies: chartjs-color-string "^0.6.0" - color-convert "^0.5.3" + color-convert "^1.9.3" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= checkpoint-store@^1.1.0: version "1.1.0" @@ -3599,10 +4092,10 @@ checkpoint-store@^1.1.0: dependencies: functional-red-black-tree "^1.0.1" -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== +chokidar@^2.0.2, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -3618,18 +4111,38 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +chokidar@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" -chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" - integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -3658,29 +4171,34 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== - -clean-css@4.2.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== +clean-css@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= + cli-boxes@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +cli-cursor@^3.0.0, cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" + restore-cursor "^3.1.0" cli-table@^0.3.1: version "0.3.1" @@ -3712,6 +4230,15 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-deep@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" @@ -3723,15 +4250,14 @@ clone-deep@^0.2.4: lazy-cache "^1.0.3" shallow-clone "^0.1.2" -clone-deep@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" - integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - for-own "^1.0.0" is-plain-object "^2.0.4" - kind-of "^6.0.0" - shallow-clone "^1.0.0" + kind-of "^6.0.2" + shallow-clone "^3.0.0" clone-response@^1.0.2: version "1.0.2" @@ -3740,7 +4266,7 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone@^2.0.0, clone@^2.1.1: +clone@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -3764,6 +4290,14 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +coinstring@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/coinstring/-/coinstring-2.3.0.tgz#cdb63363a961502404a25afb82c2e26d5ff627a4" + integrity sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q= + dependencies: + bs58 "^2.0.1" + create-hash "^1.1.1" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -3772,24 +4306,26 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" - integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= - -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -3803,9 +4339,9 @@ color-string@^1.5.2: simple-swizzle "^0.2.2" color@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.1.tgz#7abf5c0d38e89378284e873c207ae2172dcc8a61" - integrity sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== dependencies: color-convert "^1.9.1" color-string "^1.5.2" @@ -3816,31 +4352,33 @@ colors@1.0.3: integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -comma-separated-tokens@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.6.tgz#3cd3d8adc725ab473843db338bcdfd4a7bb087bf" - integrity sha512-f20oA7jsrrmERTS70r3tmRSxR8IJV2MTN7qe6hzgX+3ARfXrdMJFvGWvWQK0xpcBurg9j9eO2MiqzZ8Y+/UPCA== +commander@2, commander@^2.11.0, commander@^2.12.1, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== +commander@^3.0.0, commander@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.11.0, commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + dependencies: + graceful-readlink ">= 1.0.0" common-tags@^1.8.0: version "1.8.0" @@ -3857,14 +4395,21 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" -compression@^1.5.2: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -3892,13 +4437,17 @@ concat-stream@^1.5.0, concat-stream@^1.5.1: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@^1.1.11: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== dependencies: - ini "^1.3.4" - proto-list "~1.2.1" + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" configstore@^4.0.0: version "4.0.0" @@ -3912,22 +4461,20 @@ configstore@^4.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -confusing-browser-globals@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz#5ae852bd541a910e7ffb2dbb864a2d21a36ad29b" - integrity sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ== +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -connect-history-api-fallback@^1.3.0: +connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= - dependencies: - date-now "^0.1.4" + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" @@ -3944,32 +4491,39 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== cookiejar@^2.1.1: version "2.1.2" @@ -3993,35 +4547,28 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0" - integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g== +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== dependencies: - browserslist "^4.5.4" - core-js "3.0.1" - core-js-pure "3.0.1" - semver "^6.0.0" - -core-js-pure@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe" - integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g== - -core-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" - integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== + browserslist "^4.8.3" + semver "7.0.0" -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== core-js@^2.4.0, core-js@^2.5.0: - version "2.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" - integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.5.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -4036,25 +4583,26 @@ cors@^2.8.1: object-assign "^4" vary "^1" -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: + import-fresh "^2.0.0" is-directory "^0.3.1" - js-yaml "^3.9.0" + js-yaml "^3.13.1" parse-json "^4.0.0" - require-from-string "^2.0.1" -cosmiconfig@^5.0.0, cosmiconfig@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8" - integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g== +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.0" - parse-json "^4.0.0" + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" create-ecdh@^4.0.0: version "4.0.3" @@ -4064,30 +4612,14 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-emotion@^10.0.9: - version "10.0.9" - resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-10.0.9.tgz#290c2036126171c9566fa24f49c9241d54625138" - integrity sha512-sLKD4bIiTs8PpEqr5vlCoV5lsYE4QOBYEUWaD0R+VGRMCvBKHmYlvLJXsL99Kdc4YEFAFwipi2bbncnvv6UxRg== +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= dependencies: - "@emotion/cache" "^10.0.9" - "@emotion/serialize" "^0.11.6" - "@emotion/sheet" "0.9.2" - "@emotion/utils" "0.11.1" - -create-emotion@^9.2.12: - version "9.2.12" - resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-9.2.12.tgz#0fc8e7f92c4f8bb924b0fef6781f66b1d07cb26f" - integrity sha512-P57uOF9NL2y98Xrbl2OuiDQUZ30GVmASsv5fbsjF4Hlraip2kyAvMm+2PoYUvFFw03Fhgtxk3RqZSm2/qHL9hA== - dependencies: - "@emotion/hash" "^0.6.2" - "@emotion/memoize" "^0.6.1" - "@emotion/stylis" "^0.7.0" - "@emotion/unitless" "^0.6.2" - csstype "^2.5.2" - stylis "^3.5.0" - stylis-rule-sheet "^0.0.10" - -create-hash@^1.1.0, create-hash@^1.1.2: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -4098,7 +4630,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.3, create-hmac@^1.1.4: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -4110,14 +4642,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-context@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" - integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag== - dependencies: - fbjs "^0.8.0" - gud "^1.0.0" - cross-fetch@^2.1.0, cross-fetch@^2.1.1: version "2.2.3" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" @@ -4126,16 +4650,14 @@ cross-fetch@^2.1.0, cross-fetch@^2.1.1: node-fetch "2.1.2" whatwg-fetch "2.0.4" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" cross-spawn@^3.0.0: version "3.0.1" @@ -4150,11 +4672,22 @@ cross-spawn@^5.0.1: resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: - lru-cache "^4.0.1" + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" shebang-command "^1.2.0" which "^1.2.9" -crypto-browserify@^3.11.0: +crypto-browserify@3.12.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -4204,22 +4737,23 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.14" + postcss "^7.0.23" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" css-prefers-color-scheme@^3.1.1: version "3.1.1" @@ -4244,47 +4778,49 @@ css-select@^1.1.0: nth-check "~1.0.1" css-select@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" - integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: boolbase "^1.0.0" - css-what "^2.1.2" + css-what "^3.2.1" domutils "^1.7.0" nth-check "^1.0.2" -css-tree@1.0.0-alpha.28: - version "1.0.0-alpha.28" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" - integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - -css-tree@1.0.0-alpha.29: - version "1.0.0-alpha.29" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" - integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" + mdn-data "2.0.4" + source-map "^0.6.1" css-unit-converter@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= -css-url-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" - integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= - -css-what@2.1, css-what@^2.1.2: +css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -cssdb@^4.3.0: +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== @@ -4357,7 +4893,7 @@ cssnano-util-same-parent@^4.0.0: resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^4.1.0: +cssnano@^4.1.10: version "4.1.10" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== @@ -4367,29 +4903,29 @@ cssnano@^4.1.0: is-resolvable "^1.0.0" postcss "^7.0.0" -csso@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" - integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== dependencies: - css-tree "1.0.0-alpha.29" + css-tree "1.0.0-alpha.37" cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: - version "0.3.6" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" - integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^1.0.0, cssstyle@^1.1.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077" - integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow== + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== dependencies: cssom "0.3.x" -csstype@^2.2.0, csstype@^2.5.2, csstype@^2.5.7: - version "2.6.4" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.4.tgz#d585a6062096e324e7187f80e04f92bd0f00e37f" - integrity sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg== +csstype@^2.2.0, csstype@^2.5.7, csstype@^2.6.7: + version "2.6.8" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.8.tgz#0fb6fc2417ffd2816a418c9336da74d7f07db431" + integrity sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA== currently-unhandled@^0.4.1: version "0.4.1" @@ -4398,15 +4934,70 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d3-array@1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +d3-geo-projection@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/d3-geo-projection/-/d3-geo-projection-1.2.2.tgz#ef0e6cdcfa0df236d0e23f2ca7750462ca331f72" + integrity sha1-7w5s3PoN8jbQ4j8sp3UEYsozH3I= + dependencies: + commander "2" + d3-array "1" + d3-geo "^1.1.0" + +d3-geo@1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.6.3.tgz#21683a43a061eaba21a7f254b51d5937eb640756" + integrity sha1-IWg6Q6Bh6rohp/JUtR1ZN+tkB1Y= + dependencies: + d3-array "1" + +d3-geo@^1.1.0: + version "1.11.9" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.11.9.tgz#77eaed14ba62fc2c0aef55cd2943849c866f7ae6" + integrity sha512-9edcH6J3s/Aa3KJITWqFJbyB/8q3mMlA9Fi7z6yy+FAYMnRaxmC7jBhUnsINxVWD14GmqX3DK8uk7nV6/Ekt4A== + dependencies: + d3-array "1" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" damerau-levenshtein@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" - integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ= + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +"darknode-sol@https://github.com/renproject/darknode-sol#e9e7357e3e8d6e30bbd03a72eaaefdcb9a0e6ad7": + version "0.0.3" + resolved "https://github.com/renproject/darknode-sol#e9e7357e3e8d6e30bbd03a72eaaefdcb9a0e6ad7" + dependencies: + openzeppelin-solidity "2.4.0" + +"darknode-sol@https://github.com/renproject/darknode-sol#f60d23ffa59203ae13a3d99688f12fdf704eb095": + version "0.0.3" + resolved "https://github.com/renproject/darknode-sol#f60d23ffa59203ae13a3d99688f12fdf704eb095" + dependencies: + openzeppelin-solidity "2.3.0" + +"darknode-sol@https://github.com/renproject/darknode-sol#ff7d0a442a52ae7990e0ee21a51b037c47450448": + version "0.0.3" + resolved "https://github.com/renproject/darknode-sol#ff7d0a442a52ae7990e0ee21a51b037c47450448" + dependencies: + "@openzeppelin/upgrades" "^2.6.0" + openzeppelin-solidity "2.4.0" dashdash@^1.12.0: version "1.14.1" @@ -4424,11 +5015,6 @@ data-urls@^1.0.0, data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= - debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -4436,14 +5022,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@=3.1.0: +debug@3.1.0, debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -4462,29 +5048,89 @@ decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-response@^3.3.0: +decompress-response@^3.2.0, decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" -deep-equal@^1.0.1, deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-equal@^1.0.1, deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" deep-extend@^0.6.0: version "0.6.0" @@ -4505,9 +5151,9 @@ default-gateway@^4.2.0: ip-regex "^2.1.0" defer-to-connect@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e" - integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== deferred-leveldown@~1.2.1: version "1.2.2" @@ -4550,17 +5196,18 @@ defined@~1.0.0: resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: + "@types/glob" "^7.1.1" globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" delayed-stream@~1.0.0: version "1.0.0" @@ -4572,15 +5219,20 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +delimit-stream@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" + integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -4597,11 +5249,6 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -4620,15 +5267,15 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" -diff-sequences@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" - integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== -diff@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== diffie-hellman@^5.0.0: version "5.0.3" @@ -4703,13 +5350,21 @@ dom-helpers@^3.4.0: dependencies: "@babel/runtime" "^7.1.2" +dom-helpers@^5.0.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.3.tgz#7233248eb3a2d1f74aafca31e52c5299cc8ce821" + integrity sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw== + dependencies: + "@babel/runtime" "^7.6.3" + csstype "^2.6.7" + dom-serializer@0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" + domelementtype "^2.0.1" + entities "^2.0.0" dom-walk@^0.1.0: version "0.1.1" @@ -4721,11 +5376,16 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: +domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -4763,15 +5423,22 @@ dot-prop@^4.1.0, dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" -dotenv-expand@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" - integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== +dotenv@8.2.0, dotenv@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== + dependencies: + minimatch "^3.0.4" drbg.js@^1.0.1: version "1.0.1" @@ -4810,20 +5477,23 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ecurve@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" + integrity sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w== + dependencies: + bigi "^1.1.0" + safe-buffer "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.122, electron-to-chromium@^1.3.137: - version "1.3.143" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.143.tgz#8b2a631ab75157aa53d0c2933275643b99ef580b" - integrity sha512-J9jOpxIljQZlV6GIP2fwAWq0T69syawU0sH3EW3O2Bgxquiy+veeIT5mBDRz+i3oHUSL1tvVgRKH3/4QiQh9Pg== - -electron-to-chromium@^1.3.127, electron-to-chromium@^1.3.47: - version "1.3.131" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.131.tgz#205a0b7a276b3f56bc056f19178909243054252a" - integrity sha512-NSO4jLeyGLWrT4mzzfYX8vt1MYCoMI5LxSYAjt0H9+LF/14JyiKJSyyjA6AJTxflZlEM5v3QU33F0ohbPMCAPg== +electron-to-chromium@^1.3.341, electron-to-chromium@^1.3.47: + version "1.3.345" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz#2569d0d54a64ef0f32a4b7e8c80afa5fe57c5d98" + integrity sha512-f8nx53+Z9Y+SPWGg3YdHrbYYfIJAtbUjpFfW4X1RwTZ94iUG7geg9tV8HqzAXX7XTNgyWgAFvce4yce8ZKxKmg== elliptic@6.3.3: version "6.3.3" @@ -4835,10 +5505,33 @@ elliptic@6.3.3: hash.js "^1.0.0" inherits "^2.0.1" -elliptic@^6.0.0, elliptic@^6.2.3, elliptic@^6.4.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== +elliptic@6.5.2, elliptic@^6.0.0, elliptic@^6.4.0, elliptic@^6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +elliptic@=3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-3.0.3.tgz#865c9b420bfbe55006b9f969f97a0d2c44966595" + integrity sha1-hlybQgv75VAGuflp+XoNLESWZZU= + dependencies: + bn.js "^2.0.0" + brorand "^1.0.1" + hash.js "^1.0.0" + inherits "^2.0.1" + +elliptic@=6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -4853,27 +5546,16 @@ emoji-regex@^7.0.1, emoji-regex@^7.0.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= -emotion@^10.0.9: - version "10.0.9" - resolved "https://registry.yarnpkg.com/emotion/-/emotion-10.0.9.tgz#2c37598af13df31dcd35a1957eaa8830f368c066" - integrity sha512-IMFwwWlU2TDt7eh4v6dm58E8VHAYOitqRbVoazQdxIu9/0CAH4a3UrTMnZSlWQAo09MrRRlKfgQFHswnj40meQ== - dependencies: - babel-plugin-emotion "^10.0.9" - create-emotion "^10.0.9" - -emotion@^9.1.2: - version "9.2.12" - resolved "https://registry.yarnpkg.com/emotion/-/emotion-9.2.12.tgz#53925aaa005614e65c6e43db8243c843574d1ea9" - integrity sha512-hcx7jppaI8VoXxIWEhxpDW7I+B4kq9RNzQLmsrF6LY8BGKqe2N+gFAQr0EfuFucFlPs2A9HM4+xNj4NeqEWIOQ== - dependencies: - babel-plugin-emotion "^9.2.11" - create-emotion "^9.2.12" - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4887,19 +5569,19 @@ encoding@^0.1.11: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== dependencies: graceful-fs "^4.1.2" - memory-fs "^0.4.0" + memory-fs "^0.5.0" tapable "^1.0.0" entities@^1.1.1: @@ -4907,6 +5589,16 @@ entities@^1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -4921,31 +5613,54 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-promise@^4.0.3: - version "4.2.6" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" - integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-promisify@^5.0.0: version "5.0.0" @@ -4954,90 +5669,106 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.11.0, escodegen@^1.9.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" - integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== + version "1.13.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.13.0.tgz#c7adf9bd3f3cc675bb752f202f79a720189cab29" + integrity sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw== dependencies: - esprima "^3.1.3" + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" -eslint-config-react-app@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-4.0.1.tgz#23fd0fd7ea89442ef1e733f66a7207674b23c8db" - integrity sha512-ZsaoXUIGsK8FCi/x4lT2bZR5mMkL/Kgj+Lnw690rbvvUr/uiwgFiD8FcfAhkCycm7Xte6O5lYz4EqMx2vX7jgw== +eslint-config-react-app@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.0.tgz#135110ba56a9e378f7acfe5f36e2ae76a2317899" + integrity sha512-WrHjoGpKr1kLLiWDD81tme9jMM0hk5cMxasLSdyno6DdPt+IfLOrDJBVo6jN7tn4y1nzhs43TmUaZWO6Sf0blw== dependencies: - confusing-browser-globals "^1.0.7" + confusing-browser-globals "^1.0.9" eslint-import-resolver-node@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== dependencies: debug "^2.6.9" - resolve "^1.5.0" + resolve "^1.13.1" -eslint-loader@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.2.tgz#453542a1230d6ffac90e4e7cb9cadba9d851be68" - integrity sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg== +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" -eslint-module-utils@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" - integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-flowtype@2.50.1: - version "2.50.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz#36d4c961ac8b9e9e1dc091d3fba0537dad34ae8a" - integrity sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ== +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== dependencies: - lodash "^4.17.10" + lodash "^4.17.15" -eslint-plugin-import@2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f" - integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A== +eslint-plugin-import@2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz#d749a7263fb6c29980def8e960d380a6aa6aecaa" + integrity sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ== dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.3.0" + eslint-module-utils "^2.4.1" has "^1.0.3" - lodash "^4.17.11" minimatch "^3.0.4" + object.values "^1.1.0" read-pkg-up "^2.0.0" - resolve "^1.9.0" + resolve "^1.12.0" -eslint-plugin-jsx-a11y@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c" - integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w== +eslint-plugin-jsx-a11y@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== dependencies: + "@babel/runtime" "^7.4.5" aria-query "^3.0.0" array-includes "^3.0.3" ast-types-flow "^0.0.7" @@ -5045,109 +5776,109 @@ eslint-plugin-jsx-a11y@6.2.1: damerau-levenshtein "^1.0.4" emoji-regex "^7.0.2" has "^1.0.3" - jsx-ast-utils "^2.0.1" + jsx-ast-utils "^2.2.1" -eslint-plugin-react-hooks@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.0.tgz#348efcda8fb426399ac7b8609607c7b4025a6f5f" - integrity sha512-lHBVRIaz5ibnIgNG07JNiAuBUeKhEf8l4etNx5vfAEwqQ5tcuK3jV9yjmopPgQDagQb7HwIuQVsE3IVcGrRnag== +eslint-plugin-react-hooks@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== -eslint-plugin-react@7.12.4: - version "7.12.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c" - integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ== +eslint-plugin-react@7.18.0: + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz#2317831284d005b30aff8afb7c4e906f13fa8e7e" + integrity sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.0.1" - object.fromentries "^2.0.0" - prop-types "^15.6.2" - resolve "^1.9.0" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.14.2" -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^4.0.0, eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" + glob-parent "^5.0.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.1.0" + acorn-jsx "^5.1.0" + eslint-visitor-keys "^1.1.0" -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -5167,28 +5898,32 @@ esrecurse@^4.1.0: estraverse "^4.1.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== esutils@^2.0.0, esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eth-block-tracker@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.3.0.tgz#9a54bb8241510367003d1f183adfac05abfe0e87" - integrity sha512-QbBsNaGFbpozqzUnjhaR6Skej0485tApPoKMWAW6qpR6J3kY2lgQv47vQvv0MjayxgWXnYH48sjTm2gNRS0NXA== +eth-block-tracker@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" + integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== dependencies: eth-query "^2.1.0" - pify "^3.0.0" - safe-event-emitter "^1.0.1" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" eth-ens-namehash@2.0.8: version "2.0.8" @@ -5198,28 +5933,15 @@ eth-ens-namehash@2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -eth-json-rpc-filters@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.0.2.tgz#881ea459f3edd6b4f1889914f4d0e7d2deeb2032" - integrity sha512-936WGvom7gGMwVqqIdWyQZeXCk5i6yjAfd3oDcgfKG/jCNQnkB28qplviX2cEik/2onWvg8mpgy2D/eutv9xnw== - dependencies: - await-semaphore "^0.1.3" - eth-json-rpc-middleware "^4.0.0" - eth-query "^2.1.2" - json-rpc-engine "^5.0.0" - lodash.flatmap "^4.5.0" - safe-event-emitter "^1.0.1" - eth-json-rpc-infura@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.0.tgz#62c3f516b51351038c32a548704467cec113ca8f" - integrity sha512-FLcpdxPRVBCUc7yoE+wHGvyYg2lATedP+/q7PsKvaSzQpJbgTG4ZjLnyrLanxDr6M1k/dSNa6V5QnILwjUKJcw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" + integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== dependencies: cross-fetch "^2.1.1" eth-json-rpc-middleware "^1.5.0" json-rpc-engine "^3.4.0" json-rpc-error "^2.0.0" - tape "^4.8.0" eth-json-rpc-middleware@^1.5.0: version "1.6.0" @@ -5232,48 +5954,24 @@ eth-json-rpc-middleware@^1.5.0: ethereumjs-block "^1.6.0" ethereumjs-tx "^1.3.3" ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.1.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^3.6.0" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - tape "^4.6.3" - -eth-json-rpc-middleware@^4.0.0, eth-json-rpc-middleware@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.1.2.tgz#9873faf07c93cdc8fa932c45be6cbe4f2b06ce79" - integrity sha512-S1rdcbgg462WvY/wPakKeOPkdVJgsov8BnQN0+gioT8eh4YBwm6KfwcyeHV+IxQ8l5V1teiTLHzgvzSzmasEmQ== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-query "^2.1.2" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.2" - ethereumjs-vm "2.2.2" + ethereumjs-vm "^2.1.0" fetch-ponyfill "^4.0.0" - json-rpc-engine "^5.0.0" + json-rpc-engine "^3.6.0" json-rpc-error "^2.0.0" json-stable-stringify "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" + promise-to-callback "^1.0.0" + tape "^4.6.3" -eth-lib@0.1.27: - version "0.1.27" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.27.tgz#f0b0fd144f865d2d6bf8257a40004f2e75ca1dd6" - integrity sha512-B8czsfkJYzn2UIEMwjc7Mbj+Cy72V+/OXH/tb44LV8jhrjizQJJ325xMOMyk3+ETa6r6oi0jsUY14+om8mQMWA== +eth-lib@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" + integrity sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco= dependencies: bn.js "^4.11.6" elliptic "^6.4.0" - keccakjs "^0.2.1" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" xhr-request-promise "^0.1.2" -eth-lib@0.2.8: +eth-lib@0.2.8, eth-lib@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== @@ -5282,6 +5980,18 @@ eth-lib@0.2.8: elliptic "^6.4.0" xhr-request-promise "^0.1.2" +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" @@ -5314,24 +6024,31 @@ eth-tx-summary@^3.1.2: ethereumjs-vm "^2.6.0" through2 "^2.0.3" -ethereum-common@0.0.18, ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= - -ethereum-common@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.1.0.tgz#874dd0fae5e962a56c50ebf28efa6fe39492b0e7" - integrity sha1-h03Q+uXpYqVsUOvyjvpv45SSsOc= +ethereum-bloom-filters@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.6.tgz#9cdebb3ec20de96ec4a434c6bad6ea5a513037aa" + integrity sha512-dE9CGNzgOOsdh7msZirvv8qjHtnHpvBlKe2647kM8v+yeF71IRso55jpojemvHV+jMjr48irPWxMRaHuOWzAFA== + dependencies: + js-sha3 "^0.8.0" ethereum-common@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" + integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + +ethereum-protocol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz#b7d68142f4105e0ae7b5e178cf42f8d4dc4b93cf" + integrity sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg== + "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.7" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#8431eab7b3384e65e8126a4602520b78031666fb" + version "0.6.8" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#1cfbb13862f90f0b391d8a699544d5fe4dfb8c7b" dependencies: bn.js "^4.11.8" ethereumjs-util "^6.0.0" @@ -5356,34 +6073,23 @@ ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" -ethereumjs-block@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.6.0.tgz#cded4962deaca1eef17372b4d290e84b35c84372" - integrity sha1-ze1JYt6soe7xc3K00pDoSzXIQ3I= - dependencies: - async "^2.0.1" - ethereum-common "0.0.18" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - ethereumjs-block@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" - integrity sha512-Ye+uG/L2wrp364Zihdlr/GfC3ft+zG8PdHcRtsBFNNH1CkOhxOwdB8friBU85n89uRZ9eIMAywCq0F4CwT1wAw== + version "2.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== dependencies: async "^2.0.1" - ethereumjs-common "^1.1.0" - ethereumjs-tx "^1.2.2" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.1" ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" -ethereumjs-common@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.1.0.tgz#5ec9086c314d619d8f05e79a0525829fcb0e93cb" - integrity sha512-LUmYkKV/HcZbWRyu3OU9YOevsH3VJDXtI6kEd8VZweQec+JjDGKCmAVKUyzhYUHqxRJu7JNALZ3A/b3NXOP6tA== +ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" + integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: +ethereumjs-tx@^1.0.0, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== @@ -5391,18 +6097,15 @@ ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@ ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-util@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz#3e9428b317eebda3d7260d854fddda954b1f1bc6" - integrity sha1-PpQosxfuvaPXJg2FT93alUsfG8Y= +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - keccakjs "^0.2.0" - rlp "^2.0.0" - secp256k1 "^3.0.1" + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.5: +ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5: version "5.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== @@ -5415,35 +6118,19 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum safe-buffer "^5.1.1" secp256k1 "^3.0.1" -ethereumjs-util@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" - integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== +ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" + integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== dependencies: + "@types/bn.js" "^4.11.3" bn.js "^4.11.0" create-hash "^1.1.2" ethjs-util "0.1.6" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" + keccak "^2.0.0" + rlp "^2.2.3" secp256k1 "^3.0.1" -ethereumjs-vm@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.2.2.tgz#786317d2c63e547d936c1a468607510e70b4c262" - integrity sha512-sAus9UxYjUnA42G91Q1/hR7ff35IJRpcLrUfbaIH7V4cl8qKsNs3wqf3dHvtj3wRqy12ke2Wd0tYdARyGKdD6g== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereum-common "0.1.0" - ethereumjs-account "^2.0.3" - ethereumjs-block "~1.6.0" - ethereumjs-util "4.5.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.1.2" - safe-buffer "^5.1.1" - ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" @@ -5461,10 +6148,25 @@ ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: rustbn.js "~0.2.0" safe-buffer "^5.1.1" -ethers@^4.0.27: - version "4.0.27" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.27.tgz#e570b0da9d805ad65c83d81919abe02b2264c6bf" - integrity sha512-+DXZLP/tyFnXWxqr2fXLT67KlGUfLuvDkHSOtSC9TUVG9OIj6yrG5JPeXRMYo15xkOYwnjgdMKrXp5V94rtjJA== +ethereumjs-wallet@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz#b0eae6f327637c2aeb9ccb9047b982ac542e6ab1" + integrity sha512-qiXPiZOsStem+Dj/CQHbn5qex+FVkuPmGH7SvSnA9F3tdRDt8dLMyvIj3+U05QzVZNPYh4HXEdnzoYI4dZkr9w== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereumjs-util "^6.0.0" + hdkey "^1.1.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scrypt.js "^0.3.0" + utf8 "^3.0.0" + uuid "^3.3.2" + +ethers@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" + integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== dependencies: "@types/node" "^10.3.2" aes-js "3.0.0" @@ -5472,6 +6174,21 @@ ethers@^4.0.27: elliptic "6.3.3" hash.js "1.1.3" js-sha3 "0.5.7" + scrypt-js "2.0.3" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^4.0.20, ethers@^4.0.27: + version "4.0.44" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.44.tgz#f2608cbc0b4d099b7e10a01c0efc3a1037013b4e" + integrity sha512-kCkMPkpYjBkxzqjcuYUfDY7VHDbf5EXnfRPUOazdqdf59SvXaT+w5lgauxLlk1UjxnAiNfeNS87rkIXnsTaM7Q== + dependencies: + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.5.2" + hash.js "1.1.3" + js-sha3 "0.5.7" scrypt-js "2.0.4" setimmediate "1.0.4" uuid "2.0.1" @@ -5498,15 +6215,20 @@ eventemitter3@3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== -eventemitter3@^3.0.0, eventemitter3@^3.1.0: +eventemitter3@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== eventsource@^1.0.7: version "1.0.7" @@ -5524,9 +6246,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" - integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@^0.7.0: version "0.7.0" @@ -5572,54 +6294,61 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" - integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" ansi-styles "^3.2.0" - jest-get-type "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" -express@^4.14.0, express@^4.16.2: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== +express@^4.14.0, express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== dependencies: - accepts "~1.3.5" + accepts "~1.3.7" array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" + body-parser "1.19.0" + content-disposition "0.5.3" content-type "~1.0.4" - cookie "0.3.1" + cookie "0.4.0" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.1.1" + finalhandler "~1.1.2" fresh "0.5.2" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" - parseurl "~1.3.2" + parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -5635,15 +6364,15 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -5680,10 +6409,10 @@ fake-merkle-patricia-tree@^1.0.1: dependencies: checkpoint-store "^1.1.0" -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== fast-diff@^1.2.0: version "1.2.0" @@ -5691,9 +6420,9 @@ fast-diff@^1.2.0: integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^2.0.2: - version "2.2.6" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" - integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" @@ -5703,11 +6432,11 @@ fast-glob@^2.0.2: micromatch "^3.1.10" fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -5720,31 +6449,25 @@ faye-websocket@^0.10.0: websocket-driver ">=0.5.1" faye-websocket@~0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== dependencies: - bser "^2.0.0" + bser "2.1.1" -fbjs@^0.8.0: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" + pend "~1.2.0" fetch-ponyfill@^4.0.0: version "4.1.0" @@ -5753,15 +6476,15 @@ fetch-ponyfill@^4.0.0: dependencies: node-fetch "~1.7.1" -figgy-pudding@^3.5.1: +figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== dependencies: escape-string-regexp "^1.0.5" @@ -5772,23 +6495,38 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filesize@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== +filesize@*, filesize@6.0.1, filesize@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== fill-range@^4.0.0: version "4.0.0" @@ -5800,17 +6538,24 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" + parseurl "~1.3.3" + statuses "~1.5.0" unpipe "~1.0.0" find-cache-dir@^0.1.1: @@ -5822,7 +6567,7 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-cache-dir@^2.0.0: +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -5831,24 +6576,27 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" + integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.0.0.tgz#c367f8024de92efb75f2d4906536d24682065c3a" - integrity sha512-zoH7ZWPkRdgwYCDVoQTzqjG8JSPANhtvLhh4KVUHyKnaUJJrNeFmWIkTcNuJmR3GLMEmGYEf2S2bjgx26JTF+Q== +find-up@4.1.0, find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" + path-exists "^4.0.0" find-up@^1.0.0: version "1.1.2" @@ -5865,6 +6613,21 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-yarn-workspace-root@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== + dependencies: + fs-extra "^4.0.3" + micromatch "^3.1.4" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -5875,14 +6638,14 @@ flat-cache@^2.0.1: write "1.0.3" flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== flush-write-stream@^1.0.0: version "1.1.1" @@ -5900,13 +6663,13 @@ follow-redirects@1.5.10: debug "=3.1.0" follow-redirects@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" - integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== dependencies: - debug "^3.2.6" + debug "^3.0.0" -for-each@^0.3.3, for-each@~0.3.3: +for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== @@ -5930,26 +6693,19 @@ for-own@^0.1.3: dependencies: for-in "^1.0.1" -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.1.1.tgz#caf2a210778fb1e171b6993ca0a40f9b6589e3b7" - integrity sha512-gqWAEMLlae/oeVnN6RWCAhesOJMswAN1MaKNqhhjXHV5O0/rTUjWI4UbgQHdlrVbCnb+xLotXmJbBlC66QmpFw== +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" - chokidar "^2.0.4" + chokidar "^3.3.0" micromatch "^3.1.10" minimatch "^3.0.4" semver "^5.6.0" @@ -5990,7 +6746,21 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@7.0.1, fs-extra@^7.0.0: +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^4.0.2, fs-extra@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -5999,21 +6769,28 @@ fs-extra@7.0.1, fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - graceful-fs "^4.1.2" + graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: - minipass "^2.2.1" + minipass "^3.0.0" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -6030,30 +6807,30 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.6.tgz#87b19df0bfb4a1a51d7ddb51b01b5f3bedb40c33" - integrity sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A== +fsevents@2.1.2, fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" -fstream@^1.0.0, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: +function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -6084,27 +6861,35 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-own-enumerable-property-symbols@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" - integrity sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" - integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= -get-proxy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" - integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== - dependencies: - npm-conf "^1.1.0" +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-stdin@^4.0.1: version "4.0.1" @@ -6116,6 +6901,14 @@ get-stdin@^7.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -6128,6 +6921,13 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -6148,15 +6948,22 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1, glob@~7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1, glob@~7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -6196,11 +7003,18 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -6231,15 +7045,15 @@ globby@^6.1.0: pinkie-promise "^2.0.0" globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== + version "1.3.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.0.tgz#41d0e9fb44afd4b80d93a23263714f90b3dec904" + integrity sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg== dependencies: glob "~7.1.1" lodash "~4.17.10" minimatch "~3.0.2" -got@^9.6.0: +got@9.6.0, got@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== @@ -6256,10 +7070,52 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +got@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= growly@^1.3.0: version "1.3.0" @@ -6271,30 +7127,19 @@ gud@^1.0.0: resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== -gzip-size@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" - integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA== +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== dependencies: duplexer "^0.1.1" - pify "^3.0.0" + pify "^4.0.1" handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -6325,10 +7170,27 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" has-unicode@^2.0.0: version "2.0.1" @@ -6371,7 +7233,7 @@ has-yarn@^2.1.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== -has@^1.0.0, has@^1.0.1, has@^1.0.3, has@~1.0.3: +has@^1.0.0, has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -6402,33 +7264,16 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hast-util-from-parse5@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.0.tgz#a505a05766e0f96e389bfb0b1dd809eeefcef47b" - integrity sha512-A7ev5OseS/J15214cvDdcI62uwovJO2PB60Xhnq7kaxvvQRFDEccuqbkrFXU03GPBGopdPqlpQBRqIcDS/Fjbg== - dependencies: - ccount "^1.0.3" - hastscript "^5.0.0" - property-information "^5.0.0" - web-namespaces "^1.1.2" - xtend "^4.0.1" - -hast-util-parse-selector@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.1.tgz#4ddbae1ae12c124e3eb91b581d2556441766f0ab" - integrity sha512-Xyh0v+nHmQvrOqop2Jqd8gOdyQtE8sIP9IQf7mlVDqp924W4w/8Liuguk2L2qei9hARnQSG2m+wAOCxM7npJVw== - -hastscript@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.0.0.tgz#fee10382c1bc4ba3f1be311521d368c047d2c43a" - integrity sha512-xJtuJ8D42Xtq5yJrnDg/KAIxl2cXBXKoiIJwmWX9XMf8113qHTGl/Bf7jEsxmENJ4w6q4Tfl8s/Y6mEZo8x8qw== +hdkey@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.1.tgz#c2b3bfd5883ff9529b72f2f08b28be0972a9f64a" + integrity sha512-DvHZ5OuavsfWs5yfVJZestsnc3wzPvLWNk6c2nRUfo6X+OtxypGt20vDDf7Ba+MJzjL3KS1og2nw2eBbLCOUTA== dependencies: - comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.2.0" - property-information "^5.0.1" - space-separated-tokens "^1.0.0" + coinstring "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" -he@1.2.x: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -6438,17 +7283,17 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -history@^4.9.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" - integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== +history@^4.10.1, history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== dependencies: "@babel/runtime" "^7.1.2" loose-envify "^1.2.0" - resolve-pathname "^2.2.0" + resolve-pathname "^3.0.0" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" - value-equal "^0.4.0" + value-equal "^1.0.1" hmac-drbg@^1.0.0: version "1.0.1" @@ -6460,9 +7305,9 @@ hmac-drbg@^1.0.0: minimalistic-crypto-utils "^1.0.1" hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" - integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" @@ -6474,10 +7319,10 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== hpack.js@^2.1.6: version "2.1.6" @@ -6511,34 +7356,39 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.0: +html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -html-minifier@^3.5.20: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-webpack-plugin@4.0.0-beta.5: - version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz#2c53083c1151bfec20479b1f8aaf0039e77b5513" - integrity sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ== - dependencies: - html-minifier "^3.5.20" - loader-utils "^1.1.0" - lodash "^4.17.11" +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + +html-minifier-terser@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.2.tgz#0e67a0b062ae1dd0719fc73199479298f807ae16" + integrity sha512-VAaitmbBuHaPKv9bj47XKypRhgDxT/cDLvsPiiF7w+omrN3K0eQhpigV9Z1ilrmHa9e0rOYcD6R/+LCDADGcnQ== + dependencies: + camel-case "^3.0.0" + clean-css "^4.2.1" + commander "^4.0.0" + he "^1.2.0" + param-case "^2.1.1" + relateurl "^0.2.7" + terser "^4.3.9" + +html-webpack-plugin@4.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== + dependencies: + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" pretty-error "^2.1.1" - tapable "^1.1.0" + tapable "^1.1.3" util.promisify "1.0.0" htmlparser2@^3.3.0: @@ -6553,6 +7403,11 @@ htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-cache-semantics@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" @@ -6563,7 +7418,18 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= @@ -6573,13 +7439,13 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== dependencies: depd "~1.1.2" - inherits "2.0.3" + inherits "2.0.4" setprototypeof "1.1.1" statuses ">= 1.5.0 < 2" toidentifier "1.0.0" @@ -6589,12 +7455,20 @@ http-https@^1.0.0: resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= -http-parser-js@>=0.4.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" - integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" -http-proxy-middleware@^0.19.1: +http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== @@ -6605,11 +7479,11 @@ http-proxy-middleware@^0.19.1: micromatch "^3.1.10" http-proxy@^1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + version "1.18.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== dependencies: - eventemitter3 "^3.0.0" + eventemitter3 "^4.0.0" follow-redirects "^1.0.0" requires-port "^1.0.0" @@ -6627,39 +7501,29 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== dependencies: - agent-base "^4.1.0" + agent-base "^4.3.0" debug "^3.1.0" -humps@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" - integrity sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao= - -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= dependencies: - safer-buffer ">= 2.1.2 < 3" + ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^4.1.0: +icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -6691,9 +7555,9 @@ iferr@^0.1.5: integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" @@ -6712,6 +7576,11 @@ immediate@^3.2.3: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= +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@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" @@ -6737,10 +7606,10 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -6782,15 +7651,20 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" @@ -6800,60 +7674,46 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: +inherits@2.0.1, inherits@=2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" - integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.0.0" - through "^2.3.6" - -inquirer@^6.2.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== +inquirer@7.0.4, inquirer@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" + rxjs "^6.5.3" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" -internal-ip@^4.2.0: +internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== @@ -6883,21 +7743,31 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@^1.1.0, ip@^1.1.5: +ip@1.1.5, ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.0, ipaddr.js@^1.9.0: +ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== +ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -6912,6 +7782,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -6929,20 +7804,34 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.0, is-buffer@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== +is-buffer@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" is-ci@^2.0.0: version "2.0.0" @@ -6978,9 +7867,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-descriptor@^0.1.0: version "0.1.6" @@ -7046,6 +7935,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-function@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" @@ -7063,7 +7957,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -7083,6 +7977,16 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= + is-npm@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" @@ -7095,22 +7999,32 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= - -is-path-in-cwd@^1.0.0: +is-object@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: - is-path-inside "^1.0.0" + is-path-inside "^2.1.0" is-path-inside@^1.0.0: version "1.0.1" @@ -7119,12 +8033,26 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.1.0: +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@2.0.4, is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" + integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + dependencies: + isobject "^4.0.0" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -7136,12 +8064,17 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= + +is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has "^1.0.1" + has "^1.0.3" is-regexp@^1.0.0: version "1.0.0" @@ -7153,16 +8086,26 @@ is-resolvable@^1.0.0: resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== -is-root@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" - integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-svg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" @@ -7171,11 +8114,11 @@ is-svg@^3.0.0: html-comment-regex "^1.1.0" is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -7229,13 +8172,10 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== isstream@~0.1.2: version "0.1.2" @@ -7280,336 +8220,338 @@ istanbul-lib-source-maps@^3.0.1: rimraf "^2.6.3" source-map "^0.6.1" -istanbul-reports@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== dependencies: - handlebars "^4.1.2" + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" -jest-changed-files@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" - integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.7.1: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" - integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== dependencies: - "@jest/core" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" exit "^0.1.2" import-local "^2.0.0" is-ci "^2.0.0" - jest-config "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" prompts "^2.0.1" realpath-native "^1.1.0" - yargs "^12.0.2" + yargs "^13.3.0" -jest-config@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" - integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.8.0" - "@jest/types" "^24.8.0" - babel-jest "^24.8.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^24.8.0" - jest-environment-node "^24.8.0" - jest-get-type "^24.8.0" - jest-jasmine2 "^24.8.0" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" micromatch "^3.1.10" - pretty-format "^24.8.0" + pretty-format "^24.9.0" realpath-native "^1.1.0" -jest-diff@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" - integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== +jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: chalk "^2.0.1" - diff-sequences "^24.3.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" jest-docblock@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" - integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== dependencies: detect-newline "^2.1.0" -jest-each@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" - integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" - jest-get-type "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" -jest-environment-jsdom-fourteen@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz#aad6393a9d4b565b69a609109bf469f62bf18ccc" - integrity sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA== - dependencies: - jest-mock "^24.5.0" - jest-util "^24.5.0" - jsdom "^14.0.0" - -jest-environment-jsdom@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" - integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" jsdom "^11.5.1" -jest-environment-node@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" - integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" -jest-get-type@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" - integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -jest-haste-map@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz#51794182d877b3ddfd6e6d23920e3fe72f305800" - integrity sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ== +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" anymatch "^2.0.0" fb-watchman "^2.0.0" graceful-fs "^4.1.15" invariant "^2.2.4" - jest-serializer "^24.4.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" micromatch "^3.1.10" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^1.2.7" -jest-jasmine2@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" - integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" co "^4.6.0" - expect "^24.8.0" + expect "^24.9.0" is-generator-fn "^2.0.0" - jest-each "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" throat "^4.0.0" -jest-leak-detector@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" - integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== dependencies: - pretty-format "^24.8.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-matcher-utils@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" - integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: chalk "^2.0.1" - jest-diff "^24.8.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-message-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" - integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" "@types/stack-utils" "^1.0.1" chalk "^2.0.1" micromatch "^3.1.10" slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^24.5.0, jest-mock@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" - integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-regex-util@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" - integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== -jest-resolve-dependencies@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" - integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" jest-regex-util "^24.3.0" - jest-snapshot "^24.8.0" - -jest-resolve@24.7.1: - version "24.7.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.1.tgz#e4150198299298380a75a9fd55043fa3b9b17fde" - integrity sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw== - dependencies: - "@jest/types" "^24.7.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + jest-snapshot "^24.9.0" -jest-resolve@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" - integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== +jest-resolve@24.9.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" browser-resolve "^1.11.3" chalk "^2.0.1" jest-pnp-resolver "^1.2.1" realpath-native "^1.1.0" -jest-runner@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" - integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== dependencies: "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.4.2" exit "^0.1.2" graceful-fs "^4.1.15" - jest-config "^24.8.0" + jest-config "^24.9.0" jest-docblock "^24.3.0" - jest-haste-map "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-leak-detector "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" - integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== dependencies: "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" + "@jest/environment" "^24.9.0" "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.2" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" realpath-native "^1.1.0" slash "^2.0.0" strip-bom "^3.0.0" - yargs "^12.0.2" + yargs "^13.3.0" -jest-serializer@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" - integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -jest-snapshot@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" - integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" - expect "^24.8.0" - jest-diff "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^24.8.0" - semver "^5.5.0" - -jest-util@^24.5.0, jest-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" - integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== - dependencies: - "@jest/console" "^24.7.1" - "@jest/fake-timers" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" callsites "^3.0.0" chalk "^2.0.1" graceful-fs "^4.1.15" @@ -7618,58 +8560,67 @@ jest-util@^24.5.0, jest-util@^24.8.0: slash "^2.0.0" source-map "^0.6.0" -jest-validate@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" - integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== dependencies: - "@jest/types" "^24.8.0" - camelcase "^5.0.0" + "@jest/types" "^24.9.0" + camelcase "^5.3.1" chalk "^2.0.1" - jest-get-type "^24.8.0" - leven "^2.1.0" - pretty-format "^24.8.0" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" -jest-watch-typeahead@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.3.0.tgz#f56d9ee17ea71ecbf8253fed213df3185a1584c9" - integrity sha512-+uOtlppt9ysST6k6ZTqsPI0WNz2HLa8bowiZylZoQCQaAVn7XsVmHhZREkz73FhKelrFrpne4hQQjdq42nFEmA== +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== dependencies: - ansi-escapes "^3.0.0" + ansi-escapes "^4.2.1" chalk "^2.4.1" + jest-regex-util "^24.9.0" jest-watcher "^24.3.0" - slash "^2.0.0" - string-length "^2.0.0" + slash "^3.0.0" + string-length "^3.1.0" strip-ansi "^5.0.0" -jest-watcher@^24.3.0, jest-watcher@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" - integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== +jest-watcher@^24.3.0, jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== dependencies: - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.9" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" ansi-escapes "^3.0.0" chalk "^2.0.1" - jest-util "^24.8.0" + jest-util "^24.9.0" string-length "^2.0.0" -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - merge-stream "^1.0.1" + merge-stream "^2.0.0" supports-color "^6.1.0" -jest@24.7.1: - version "24.7.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.1.tgz#0d94331cf510c75893ee32f87d7321d5bf8f2501" - integrity sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA== +jest-worker@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" + integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== dependencies: import-local "^2.0.0" - jest-cli "^24.7.1" + jest-cli "^24.9.0" jju@^1.1.0: version "1.4.0" @@ -7681,20 +8632,15 @@ js-base64@^2.1.8: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= -js-sha3@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" - integrity sha1-W4n3enR3Z5h39YxKB1JAk0sflcA= +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -7706,7 +8652,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.0: +js-yaml@^3.12.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -7751,7 +8697,7 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsdom@^14.0.0: +jsdom@^14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== @@ -7803,7 +8749,7 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -7827,17 +8773,6 @@ json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: promise-to-callback "^1.0.0" safe-event-emitter "^1.0.1" -json-rpc-engine@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.0.0.tgz#f048a5402f602604595f820229b71e8431206490" - integrity sha512-bxzuHwoP/U7xBIcqxP9QaOMgW7GDbBNU2TLNWfndRfHxwPLKkGMBfgtns0oDvgjMPJLCgyFZjrnVuSHW5GSC7A== - dependencies: - "@babel/preset-env" "^7.3.4" - async "^2.0.1" - babelify "^10.0.0" - promise-to-callback "^1.0.0" - safe-event-emitter "^1.0.1" - json-rpc-error@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" @@ -7877,10 +8812,17 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json-text-sequence@^0.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" + integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= + dependencies: + delimit-stream "0.1.0" + json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== json5@^0.5.1: version "0.5.1" @@ -7895,9 +8837,9 @@ json5@^1.0.1: minimist "^1.2.0" json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== dependencies: minimist "^1.2.0" @@ -7913,6 +8855,11 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -7928,12 +8875,13 @@ jssha@2.3.1: resolved "https://registry.yarnpkg.com/jssha/-/jssha-2.3.1.tgz#147b2125369035ca4b2f7d210dc539f009b3de9a" integrity sha1-FHshJTaQNcpLL30hDcU58Amz3po= -jsx-ast-utils@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" - integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== dependencies: array-includes "^3.0.3" + object.assign "^4.1.0" keccak@^1.0.2: version "1.4.0" @@ -7945,13 +8893,15 @@ keccak@^1.0.2: nan "^2.2.1" safe-buffer "^5.1.0" -keccakjs@^0.2.0, keccakjs@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" - integrity sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg== +keccak@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" + integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== dependencies: - browserify-sha3 "^0.0.4" - sha3 "^1.2.2" + bindings "^1.5.0" + inherits "^2.0.4" + nan "^2.14.0" + safe-buffer "^5.2.0" keyv@^3.0.0: version "3.1.0" @@ -7960,7 +8910,7 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -killable@^1.0.0: +killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== @@ -7992,11 +8942,18 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" -kleur@^3.0.2: +kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== @@ -8009,6 +8966,13 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= + dependencies: + package-json "^4.0.0" + latest-version@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" @@ -8095,10 +9059,17 @@ levelup@^1.2.1: semver "~5.4.1" xtend "~4.0.0" -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" levn@^0.3.0, levn@~0.3.0: version "0.3.0" @@ -8108,6 +9079,27 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libnpmconfig@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" + integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== + dependencies: + figgy-pudding "^3.5.1" + find-up "^3.0.0" + ini "^1.3.5" + +lie@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -8139,7 +9131,7 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-fs-cache@^1.0.0: +loader-fs-cache@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== @@ -8147,12 +9139,12 @@ loader-fs-cache@^1.0.0: find-cache-dir "^0.1.1" mkdirp "0.5.1" -loader-runner@^2.3.0: +loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -8161,6 +9153,13 @@ loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1. emojis-list "^2.0.0" json5 "^1.0.1" +localforage@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.7.3.tgz#0082b3ca9734679e1bd534995bdd3b24cf10f204" + integrity sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ== + dependencies: + lie "3.1.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -8184,65 +9183,155 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash._reinterpolate@~3.0.0: +lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.flatmap@^4.5.0: +lodash.concat@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.concat/-/lodash.concat-4.5.0.tgz#b053ae02e4a8008582e7256b9d02bda6d0380395" + integrity sha1-sFOuAuSoAIWC5yVrnQK9ptA4A5U= + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= + +lodash.every@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" + integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= + +lodash.findlast@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.findlast/-/lodash.findlast-4.6.0.tgz#ea8bb78cf2e7e7804fc8aeb7d1953e07fe31fbc8" + integrity sha1-6ou3jPLn54BPyK630ZU+B/4x+8g= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + +lodash.invertby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.invertby/-/lodash.invertby-4.7.0.tgz#cdebb6cd4942aa6b8df2c74be1c5d948682718b0" + integrity sha1-zeu2zUlCqmuN8sdL4cXZSGgnGLA= + +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= + +lodash.isequal@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" + integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= + +lodash.map@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.omit@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" + integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= + +lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + +lodash.pickby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" + integrity sha1-feoh2MGNdwOifHBMFdO4SmfjOv8= + +lodash.random@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.random/-/lodash.random-3.2.0.tgz#96e24e763333199130d2c9e2fd57f91703cc262d" + integrity sha1-luJOdjMzGZEw0sni/Vf5FwPMJi0= + +lodash.reverse@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.reverse/-/lodash.reverse-4.0.1.tgz#1f2afedace2e16e660f3aa7c59d3300a6f25d13c" + integrity sha1-Hyr+2s4uFuZg86p8WdMwCm8l0Tw= + +lodash.some@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= - -lodash.template@^4.2.4, lodash.template@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" - integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= +lodash.template@^4.4.0, lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: - lodash._reinterpolate "~3.0.0" + lodash._reinterpolate "^3.0.0" lodash.templatesettings "^4.0.0" lodash.templatesettings@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" - integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: - lodash._reinterpolate "~3.0.0" - -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + lodash._reinterpolate "^3.0.0" lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@~4.17.10: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +lodash.values@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" + integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c= -loglevel@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= +lodash.without@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= + +lodash@=3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= + +lodash@=4.17.15, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@~4.17.10: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +loglevel@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" + integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== 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" @@ -8269,6 +9358,11 @@ lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -8301,8 +9395,32 @@ make-dir@^2.0.0, make-dir@^2.1.0: resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: - pify "^4.0.1" - semver "^5.6.0" + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" + integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + dependencies: + semver "^6.0.0" + +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" makeerror@1.0.x: version "1.0.11" @@ -8349,10 +9467,10 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdn-data@~1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" - integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== media-typer@0.3.0: version "0.3.0" @@ -8381,11 +9499,11 @@ memdown@^1.0.0: safe-buffer "~5.1.1" memoize-one@^5.0.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.4.tgz#005928aced5c43d890a4dfab18ca908b0ec92cbc" - integrity sha512-P0z5IeAH6qHHGkJIXWw0xC2HNEgkx/9uWWBQw64FJj3/ol14VYdfVGWWr0fXfjhhv3TKVIqUq65os6O4GUNksA== + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: +memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -8393,6 +9511,14 @@ memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -8423,17 +9549,20 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +merkle-lib@^2.0.10: + version "2.0.10" + resolved "https://registry.yarnpkg.com/merkle-lib/-/merkle-lib-2.0.10.tgz#82b8dbae75e27a7785388b73f9d7725d0f6f3326" + integrity sha1-grjbrnXieneFOItz+ddyXQ9vMyY= merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: version "2.3.2" @@ -8459,7 +9588,7 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -8486,39 +9615,29 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.40.0" - -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + mime-db "1.43.0" -mime@^2.0.3: - version "2.4.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78" - integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg== - -mime@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz#229687331e86f68924e6cb59e1cdd937f18275fe" - integrity sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mime@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -8535,12 +9654,22 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -mini-css-extract-plugin@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" - integrity sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw== +mini-create-react-context@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189" + integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw== + dependencies: + "@babel/runtime" "^7.4.0" + gud "^1.0.0" + tiny-warning "^1.0.2" + +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== dependencies: loader-utils "^1.1.0" + normalize-url "1.9.1" schema-utils "^1.0.0" webpack-sources "^1.1.0" @@ -8571,25 +9700,48 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -8608,9 +9760,9 @@ mississippi@^3.0.0: through2 "^2.0.0" mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -8623,13 +9775,30 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*: + version "1.0.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.3.tgz#4cf2e30ad45959dddea53ad97d518b6c8205e1ea" + integrity sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g== + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mock-fs@^4.1.0: + version "4.10.4" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.10.4.tgz#4eaa3d6f7da2f44e1f3dd6b462cbbcb7b082e3d4" + integrity sha512-gDfZDLaPIvtOusbusLinfx6YSe2YpQsDT8qdP41P47dQ/NQggtkHukz7hwqgt8QvMBmAv+Z6DGmXPyb5BWX2nQ== + moment@^2.10.2, moment@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" @@ -8652,11 +9821,16 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@^2.0.0, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -8670,26 +9844,26 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -nan@2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" - integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.0.8, nan@^2.11.0, nan@^2.12.1, nan@^2.13.2, nan@^2.2.1, nan@^2.3.3: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== +nan@^2.12.1, nan@^2.13.2, nan@^2.14.0, nan@^2.2.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= +nanoassert@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d" + integrity sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40= + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -8712,30 +9886,26 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.1.tgz#d272f2f4034afb9c4c9ab1379aabc17fc85c9388" - integrity sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg== - dependencies: - debug "^4.1.0" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" - integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nested-error-stacks@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -8756,12 +9926,21 @@ node-alias@^1.0.4: chalk "^1.1.1" lodash "^4.2.0" +node-fetch-npm@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + node-fetch@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-fetch@^1.0.1, node-fetch@~1.7.1: +node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== @@ -8769,10 +9948,10 @@ node-fetch@^1.0.1, node-fetch@~1.7.1: encoding "^0.1.11" is-stream "^1.0.1" -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== node-gyp@^3.8.0: version "3.8.0" @@ -8797,10 +9976,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" - integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA== +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -8812,7 +9991,7 @@ node-libs-browser@^2.0.0: events "^3.0.0" https-browserify "^1.0.0" os-browserify "^0.3.0" - path-browserify "0.0.0" + path-browserify "0.0.1" process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" @@ -8824,17 +10003,17 @@ node-libs-browser@^2.0.0: tty-browserify "0.0.0" url "^0.11.0" util "^0.11.0" - vm-browserify "0.0.4" + vm-browserify "^1.0.1" node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== dependencies: growly "^1.3.0" is-wsl "^1.1.0" @@ -8842,40 +10021,17 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^1.1.13, node-releases@^1.1.21: - version "1.1.22" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.22.tgz#d90cd5adc59ab9b0f377d4f532b09656399c88bf" - integrity sha512-O6XpteBuntW1j86mw6LlovBIwTe+sO2+7vi9avQffNeIW4upgnaCVm6xrBWH+KATz7mNNRNNeEpuWB7dT6Cr3w== +node-releases@^1.1.47: + version "1.1.47" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4" + integrity sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA== dependencies: - semver "^5.3.0" - -node-releases@^1.1.17: - version "1.1.17" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.17.tgz#71ea4631f0a97d5cd4f65f7d04ecf9072eac711a" - integrity sha512-/SCjetyta1m7YXLgtACZGDYJdCSIBAWorDWkGCGZlydP2Ll7J48l7j/JxNYZ+xsgSPbWfdulVS/aY+GdjUsQ7Q== - dependencies: - semver "^5.3.0" + semver "^6.3.0" -node-sass@^4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" - integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== +node-sass@^4.13.0: + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -8884,7 +10040,7 @@ node-sass@^4.12.0: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.15" meow "^3.7.0" mkdirp "^0.5.1" nan "^2.13.2" @@ -8895,6 +10051,11 @@ node-sass@^4.12.0: stdout-stream "^1.4.0" "true-case-path" "^1.0.2" +nofilter@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.3.tgz#34e54b4cc9757de0cad38cc0d19462489b1b7f5d" + integrity sha512-FlUlqwRK6reQCaFLAhMcF+6VkVG2caYjKQY3YsRDTl4/SEch595Qb3oLjJRDr8dkHAAOVj2pOx3VknfnSgkE5g== + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -8902,22 +10063,7 @@ node-sass@^4.12.0: dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -8934,7 +10080,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -8944,61 +10090,104 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^3.0.0, normalize-url@^3.1.0: +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" -npm-check-updates@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-3.1.10.tgz#936a4a19bbb73c70cdad407a3bd2310fd17fb5f3" - integrity sha512-qs4aYg3IbsHbzVyG/4bapgkuflkHj2yAR36ES7fSvDKs3NBotkAWpiaQ9JUbXgqSZwLuvusxBaZgpYlM3fMZSw== +npm-check-updates@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-3.2.2.tgz#20719e4627f8f6ab87274adfdb30fda22027bde1" + integrity sha512-smZLGQWYbNOQVL787LwxTKakhTll/GZ4EwlKRfskD+eTCSpxdwpbkUHbT0QxyCf1uZw86TXeAFGw8ETzmW3Fqw== dependencies: - bluebird "^3.5.5" chalk "^2.4.2" cint "^8.2.1" cli-table "^0.3.1" - commander "^2.20.0" + commander "^3.0.2" fast-diff "^1.2.0" - find-up "4.0.0" - get-proxy "^2.1.0" + find-up "4.1.0" get-stdin "^7.0.0" - https-proxy-agent "^2.2.1" json-parse-helpfulerror "^1.0.3" - lodash "^4.17.11" + libnpmconfig "^1.2.1" + lodash "^4.17.15" node-alias "^1.0.4" - npm-conf "^1.1.3" - package-json "^6.3.0" + pacote "^9.5.8" progress "^2.0.3" - prompts "^2.1.0" - rc-config-loader "^2.0.3" - registry-url "^5.1.0" + prompts "^2.2.1" + rc-config-loader "^2.0.4" requireg "^0.2.2" - semver "^6.1.1" + semver "^6.3.0" semver-utils "^1.1.4" spawn-please "^0.3.0" - update-notifier "^3.0.0" + update-notifier "^3.0.1" -npm-conf@^1.1.0, npm-conf@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" - integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== dependencies: - config-chain "^1.1.11" - pify "^3.0.0" + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== +npm-packlist@^1.1.12: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + +npm-registry-fetch@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" + integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" npm-run-path@^2.0.0: version "2.0.2" @@ -9007,7 +10196,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -9043,16 +10232,16 @@ number-to-bn@1.7.0: strip-hex-prefix "1.0.0" nwsapi@^2.0.7, nwsapi@^2.1.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" - integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.1.1, object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -9066,17 +10255,22 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^1.1.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== +object-hash@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.1.tgz#cef18a0c940cc60aa27965ecf49b782cbf101d96" + integrity sha512-HgcGMooY4JC2PBt9sdUdJ6PMzpin+YtY3r/7wg0uTifP+HJWW8rammseSEHuyt0UeShI183UGssCJqm1bJR7QA== -object-inspect@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +object-inspect@^1.7.0, object-inspect@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-keys@^1.0.11, object-keys@^1.0.12: +object-is@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -9086,6 +10280,11 @@ object-keys@~0.4.0: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -9103,23 +10302,33 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" - integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== +object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" - has "^1.0.1" + has "^1.0.3" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" object.pick@^1.3.0: version "1.3.0" @@ -9128,20 +10337,20 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" -oboe@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f" - integrity sha1-K0hl29Rr6BIlcT9Om/5Lz09oCk8= +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" + integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= dependencies: http-https "^1.0.0" @@ -9169,54 +10378,56 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^2.1.0" -opn@5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" - integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== +open@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== dependencies: is-wsl "^1.1.0" -opn@^5.1.0: +openzeppelin-solidity@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-2.3.0.tgz#1ab7b4cc3782a5472ed61eb740c56a8bfdd74119" + integrity sha512-QYeiPLvB1oSbDt6lDQvvpx7k8ODczvE474hb2kLXZBPKMsxKT1WxTCHBYrCU7kS7hfAku4DcJ0jqOyL+jvjwQw== + +openzeppelin-solidity@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-2.4.0.tgz#5f0a7b30571c45493449166e57b947203415349d" + integrity sha512-533gc5jkspxW5YT0qJo02Za5q1LHwXK9CJCc48jNj/22ncNM/3M/3JfWLqfpB90uqLwOKOovpl0JfaMQTR+gXQ== + +opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optimize-css-assets-webpack-plugin@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" - integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== dependencies: - cssnano "^4.1.0" + cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" original@^1.0.0: version "1.0.2" @@ -9256,7 +10467,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: +osenv@0, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -9264,6 +10475,11 @@ osenv@0, osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -9298,10 +10514,10 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" @@ -9326,16 +10542,37 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -9346,31 +10583,77 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + package-json@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.3.0.tgz#5ed793418b8322af7abfb985a19a20c2f40c2fb0" - integrity sha512-XO7WS3EEXd48vmW633Y97Mh9xuENFiOevI9G+ExfTG/k6xuY9cBd3fxkAoDMSEsNZXasaVJIJ1rD/n7GMf18bA== + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: got "^9.6.0" - registry-auth-token "^3.4.0" + registry-auth-token "^4.0.0" registry-url "^5.0.0" + semver "^6.2.0" + +pacote@^9.5.8: + version "9.5.12" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" + integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== + dependencies: + bluebird "^3.5.3" + cacache "^12.0.2" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-normalize-package-bin "^1.0.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.2" + safe-buffer "^5.1.2" semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - cyclist "~0.2.2" + cyclist "^1.0.1" inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: +param-case@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= @@ -9385,9 +10668,9 @@ parent-module@^1.0.0: callsites "^3.0.0" parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -9397,12 +10680,9 @@ parse-asn1@^5.0.0: safe-buffer "^5.1.1" parse-headers@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.2.tgz#9545e8a4c1ae5eaea7d24992bca890281ed26e34" - integrity sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg== - dependencies: - for-each "^0.3.3" - string.prototype.trim "^1.1.2" + version "2.0.3" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" + integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== parse-json@^2.2.0: version "2.2.0" @@ -9419,17 +10699,27 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== -parse5@5.1.0, parse5@^5.0.0: +parse5@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== -parseurl@~1.3.2: +parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -9439,10 +10729,29 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= +patch-package@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.0.tgz#677de858e352b6ca4e6cb48a6efde2cec9fde566" + integrity sha512-HWlQflaBBMjLBfOWomfolF8aqsFDeNbSNro1JDUgYqnVvPM5OILJ9DQdwIRiKmGaOsmHvhkl1FYkvv1I9r2ZJw== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^1.2.1" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + update-notifier "^2.5.0" + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" @@ -9461,6 +10770,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -9476,6 +10790,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -9487,9 +10806,9 @@ path-to-regexp@0.1.7: integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: isarray "0.0.1" @@ -9516,7 +10835,17 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -pbkdf2@^3.0.17, pbkdf2@^3.0.3: +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== @@ -9527,12 +10856,22 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pify@^2.0.0: +picomatch@^2.0.4, picomatch@^2.0.7: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -9587,33 +10926,40 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-up@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: - find-up "^2.1.0" + find-up "^3.0.0" pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -pnp-webpack-plugin@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.2.1.tgz#cd9d698df2a6fcf7255093c1c9511adf65b9421b" - integrity sha512-W6GctK7K2qQiVR+gYSv/Gyt6jwwIH4vwdviFqx+Y2jAtVf5eZyYIDf5Ac2NCDMBiX5yWscBLZElPTsyA1UtVVA== +pnp-webpack-plugin@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.0.tgz#d5c068013a2fdc82224ca50ed179c8fba9036a8e" + integrity sha512-ZcMGn/xF/fCOq+9kWMP9vVVxjIkMCja72oy3lziR7UHy0hHFZ57iVpQ71OtveVbmzeCmphBg8pxNdk/hlK99aQ== dependencies: - ts-pnp "^1.0.0" + ts-pnp "^1.1.2" -portfinder@^1.0.9: - version "1.0.20" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" - integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -9621,19 +10967,19 @@ posix-character-classes@^0.1.0: integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-attribute-case-insensitive@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz#b2a721a0d279c2f9103a36331c88981526428cc7" - integrity sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A== + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: postcss "^7.0.2" - postcss-selector-parser "^5.0.0" + postcss-selector-parser "^6.0.2" -postcss-browser-comments@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-2.0.0.tgz#dc48d6a8ddbff188a80a000b7393436cb18aed88" - integrity sha512-xGG0UvoxwBc4Yx4JX3gc0RuDl1kc4bVihCzzk6UC72YPfq5fu3c717Nu8Un3nvnq1BJ31gBnFXIG/OaUTnpHgA== +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - postcss "^7.0.2" + postcss "^7" postcss-calc@^7.0.1: version "7.0.1" @@ -9662,7 +11008,7 @@ postcss-color-gray@^5.0.0: postcss "^7.0.5" postcss-values-parser "^2.0.0" -postcss-color-hex-alpha@^5.0.2: +postcss-color-hex-alpha@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== @@ -9706,19 +11052,19 @@ postcss-convert-values@^4.0.1: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-custom-media@^7.0.7: +postcss-custom-media@^7.0.8: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: postcss "^7.0.14" -postcss-custom-properties@^8.0.9: - version "8.0.10" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.10.tgz#e8dc969e1e15c555f0b836b7f278ef47e3cdeaff" - integrity sha512-GDL0dyd7++goDR4SSasYdRNNvp4Gqy1XMzcCnTijiph7VB27XXpJ8bW/AI0i2VSBZ55TpdGhMr37kMSpRfYD0Q== +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: - postcss "^7.0.14" + postcss "^7.0.17" postcss-values-parser "^2.0.1" postcss-custom-selectors@^5.1.2: @@ -9825,11 +11171,11 @@ postcss-image-set-function@^3.0.1: postcss-values-parser "^2.0.0" postcss-initial@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.0.tgz#1772512faf11421b791fb2ca6879df5f68aa0517" - integrity sha512-WzrqZ5nG9R9fUtrA+we92R4jhVvEB32IIRTzfIG/PLL8UV4CvbF1ugTEHEFX6vWxl41Xt5RTCJPEZkuWzrOM+Q== + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== dependencies: - lodash.template "^4.2.4" + lodash.template "^4.5.0" postcss "^7.0.2" postcss-lab-function@^2.0.1: @@ -9842,11 +11188,11 @@ postcss-lab-function@^2.0.1: postcss-values-parser "^2.0.0" postcss-load-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" - integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== dependencies: - cosmiconfig "^4.0.0" + cosmiconfig "^5.0.0" import-cwd "^2.0.0" postcss-loader@3.0.0: @@ -9942,35 +11288,36 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" -postcss-modules-scope@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" - integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== +postcss-modules-scope@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" + integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - icss-replace-symbols "^1.1.0" + icss-utils "^4.0.0" postcss "^7.0.6" postcss-nesting@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.0.tgz#6e26a770a0c8fcba33782a6b6f350845e1a448f6" - integrity sha512-WSsbVd5Ampi3Y0nk/SKr5+K34n52PqMqEfswu6RtU4r7wA8vSD+gM8/D9qq4aJkHImwn1+9iEFTbjoWsQeqtaQ== + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: postcss "^7.0.2" @@ -10055,15 +11402,16 @@ postcss-normalize-whitespace@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-7.0.1.tgz#eb51568d962b8aa61a8318383c8bb7e54332282e" - integrity sha512-NOp1fwrG+6kVXWo7P9SizCHX6QvioxFD/hZcI2MLxPmVnFJFC0j0DDpIuNw2tUDeCFMni59gCVgeJ1/hYhj2OQ== +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== dependencies: - "@csstools/normalize.css" "^9.0.1" - browserslist "^4.1.1" - postcss "^7.0.2" - postcss-browser-comments "^2.0.0" + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" postcss-ordered-values@^4.1.2: version "4.1.2" @@ -10096,27 +11444,27 @@ postcss-place@^4.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-preset-env@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.6.0.tgz#642e7d962e2bdc2e355db117c1eb63952690ed5b" - integrity sha512-I3zAiycfqXpPIFD6HXhLfWXIewAWO8emOKz+QSsxaUZb9Dp8HbF5kUf+4Wy/AxR33o+LRoO8blEWCHth0ZsCLA== +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== dependencies: - autoprefixer "^9.4.9" - browserslist "^4.4.2" - caniuse-lite "^1.0.30000939" + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" css-blank-pseudo "^0.1.4" css-has-pseudo "^0.10.0" css-prefers-color-scheme "^3.1.1" - cssdb "^4.3.0" - postcss "^7.0.14" + cssdb "^4.4.0" + postcss "^7.0.17" postcss-attribute-case-insensitive "^4.0.1" postcss-color-functional-notation "^2.0.1" postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.2" + postcss-color-hex-alpha "^5.0.3" postcss-color-mod-function "^3.0.3" postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.7" - postcss-custom-properties "^8.0.9" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" postcss-custom-selectors "^5.1.2" postcss-dir-pseudo-class "^5.0.0" postcss-double-position-gradients "^1.0.0" @@ -10206,7 +11554,7 @@ postcss-selector-parser@^3.0.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== @@ -10215,7 +11563,7 @@ postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-sel indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -10243,11 +11591,16 @@ postcss-unique-selectors@^4.0.1: postcss "^7.0.0" uniqs "^2.0.0" -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" @@ -10257,10 +11610,19 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" - integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -10276,15 +11638,20 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= pretty-bytes@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.2.0.tgz#96c92c6e95a0b35059253fb33c03e260d40f5a1f" - integrity sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w== + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== pretty-error@^2.1.1: version "2.1.1" @@ -10294,12 +11661,12 @@ pretty-error@^2.1.1: renderkid "^2.0.1" utila "~0.4" -pretty-format@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" - integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" ansi-regex "^4.0.0" ansi-styles "^3.2.0" react-is "^16.8.4" @@ -10310,9 +11677,9 @@ private@^0.1.6, private@^0.1.8: integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.10: version "0.11.10" @@ -10334,6 +11701,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + promise-to-callback@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" @@ -10342,27 +11717,20 @@ promise-to-callback@^1.0.0: is-fn "^1.0.0" set-immediate-shim "^1.0.1" -promise@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.2.tgz#9dcd0672192c589477d56891271bdc27547ae9f0" - integrity sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw== +promise@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6" + integrity sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw== dependencies: asap "~2.0.6" -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -prompts@^2.0.1, prompts@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" - integrity sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg== +prompts@^2.0.1, prompts@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" + integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" + kleur "^3.0.3" + sisteransi "^1.0.3" prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" @@ -10373,19 +11741,14 @@ prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, object-assign "^4.1.1" react-is "^16.8.1" -property-information@^5.0.0, property-information@^5.0.1: +protoduck@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.0.1.tgz#c3b09f4f5750b1634c0b24205adbf78f18bdf94f" - integrity sha512-nAtBDVeSwFM3Ot/YxT7s4NqZmqXI7lLzf46BThvotEtYf2uk2yH0ACYuWQkJ7gxKs49PPtKVY0UlDGkyN9aJlw== + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== dependencies: - xtend "^4.0.1" + genfun "^5.0.0" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -proxy-addr@~2.0.4: +proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== @@ -10404,9 +11767,9 @@ pseudomap@^1.0.2: integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24, psl@^1.1.28: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== public-encrypt@^4.0.0: version "4.0.3" @@ -10465,30 +11828,45 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pushdata-bitcoin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz#15931d3cd967ade52206f523aa7331aef7d43af7" + integrity sha1-FZMdPNlnreUiBvUjqnMxrvfUOvc= + dependencies: + bitcoin-ops "^1.3.0" + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.5.2, qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -query-string@*, query-string@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.5.0.tgz#2e1a70125af01f6f04573692d02c09302a1d8bfc" - integrity sha512-TYC4hDjZSvVxLMEucDMySkuAS9UIzSbAiYGyA9GWCjLKB8fQpviFbjd20fD7uejCDxZS+ftSdBKE6DS+xucJFg== +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@*, query-string@^6.9.0: + version "6.10.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.10.1.tgz#30b3505f6fca741d5ae541964d1b3ae9dc2a0de8" + integrity sha512-SHTUV6gDlgMXg/AQUuLpTiBtW/etZ9JT6k6RCtCyqADquApLX0Aq5oK/s5UeTUAWBG50IExjIr587GqfXRfM4A== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -10513,14 +11891,14 @@ querystringify@^2.0.0, querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -raf@3.4.1, raf@^3.4.0: +raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== dependencies: performance-now "^2.1.0" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -10540,26 +11918,11 @@ randomhex@0.1.5: resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= -range-parser@^1.2.1: +range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - raw-body@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" @@ -10570,20 +11933,20 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc-config-loader@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-2.0.3.tgz#5fbe45784c3301b15350ab6507e023c33007928f" - integrity sha512-CN9BmvV9Kcl6c4WEZ8w13JFazLYtKnqxxKGKuiCS8yZpUtJFa/nd7PdjVnRBJJ89U3OZfR6DmqOqMvmZ5ZFNMw== +rc-config-loader@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-2.0.5.tgz#81e78221167dbaa80877f2538f5e1a37c7e24ce3" + integrity sha512-T464K2MQlnNWOblUDIglpFhyN+zYJq7jSlL++/N0hUkcmIXeNFumwXFVdtf8qhUGohn4RYQ0wdi74R575I44PQ== dependencies: - debug "^3.1.0" + debug "^4.1.1" js-yaml "^3.12.0" - json5 "^1.0.1" + json5 "^2.1.0" object-assign "^4.1.0" object-keys "^1.0.12" path-exists "^3.0.0" require-from-string "^2.0.2" -rc@^1.1.6, rc@^1.2.7, rc@^1.2.8, rc@~1.2.7: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.8, rc@~1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -10593,211 +11956,230 @@ rc@^1.1.6, rc@^1.2.7, rc@^1.2.8, rc@~1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.1.tgz#809a858e44f9564c7f4205e173076f90048274f1" - integrity sha512-LbVpT1NdzTdDDs7xEZdebjDrqsvKi5UyVKUQqtTYYNyC1JJYVAwNQWe4ybWvoT2V2WW9PGVO2u5Y6aVj4ER/Ow== +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== dependencies: - core-js "3.0.1" - object-assign "4.1.1" - promise "8.0.2" - raf "3.4.1" - regenerator-runtime "0.13.2" - whatwg-fetch "3.0.0" + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" -react-chartjs-2@^2.7.6: - version "2.7.6" - resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-2.7.6.tgz#b8cd29bed00bf55b9e8172b06466b4ecf2b86bfb" - integrity sha512-xDr0jhgt/o26atftXxTVsepz+QYZI2GNKBYpxtLvYgwffLUm18a9n562reUJAHvuwKsy2v+qMlK5HyjFtSW0mg== +react-chartjs-2@^2.8.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-2.9.0.tgz#d054dbdd763fbe9a76296a4ae0752ea549b76d9e" + integrity sha512-IYwqUUnQRAJ9SNA978vxulHJTcUFTJk2LDVfbAyk0TnJFZZG7+6U/2flsE4MCw6WCbBjTTypy8T82Ch7XrPtRw== dependencies: lodash "^4.17.4" prop-types "^15.5.8" -react-dev-utils@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.0.1.tgz#5c03d85a0b2537d0c46af7165c24a7dfb274bef2" - integrity sha512-pnaeMo/Pxel8aZpxk1WwxT3uXxM3tEwYvsjCYn5R7gNxjhN1auowdcLDzFB8kr7rafAj2rxmvfic/fbac5CzwQ== - dependencies: - "@babel/code-frame" "7.0.0" - address "1.0.3" - browserslist "4.5.4" - chalk "2.4.2" - cross-spawn "6.0.5" +react-dev-utils@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.1.0.tgz#ccf82135f6dc2fc91969bc729ce57a69d8e86025" + integrity sha512-KmZChqxY6l+ed28IHetGrY8J9yZSvzlAHyFXduEIhQ42EBGtqftlbqQZ+dDTaC7CwNW2tuXN+66bRKE5h2HgrQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.8.6" + chalk "3.0.0" + cross-spawn "7.0.1" detect-port-alt "1.1.6" - escape-string-regexp "1.0.5" - filesize "3.6.1" - find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.1.1" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" global-modules "2.0.0" globby "8.0.2" - gzip-size "5.0.0" + gzip-size "5.1.1" immer "1.10.0" - inquirer "6.2.2" - is-root "2.0.0" + inquirer "7.0.4" + is-root "2.1.0" loader-utils "1.2.3" - opn "5.4.0" - pkg-up "2.0.0" - react-error-overlay "^5.1.6" + open "^6.4.0" + pkg-up "3.1.0" + react-error-overlay "^6.0.5" recursive-readdir "2.2.2" - shell-quote "1.6.1" - sockjs-client "1.3.0" - strip-ansi "5.2.0" + shell-quote "1.7.2" + strip-ansi "6.0.0" text-table "0.2.0" -react-dom@^16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" - integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== +react-dom@^16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" + integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.6" + scheduler "^0.18.0" -react-element-to-jsx-string@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.0.2.tgz#586d248bb2416855aa6ac3881e18726832c146d2" - integrity sha512-eYcPUg3FJisgAb8q3sSdce8F/xMZD/iFEjMZYnkE3b7gPi5OamGr2Hst/1pE72mzn7//dfYPXb+UqPK2xdSGsg== +react-element-to-jsx-string@^14.1.0: + version "14.3.1" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.1.tgz#a08fa6e46eb76061aca7eabc2e70f433583cb203" + integrity sha512-LRdQWRB+xcVPOL4PU4RYuTg6dUJ/FNmaQ8ls6w38YbzkbV6Yr5tFNESroub9GiSghtnMq8dQg2LcNN5aMIDzVg== dependencies: - is-plain-object "2.0.4" - stringify-object "3.2.2" + "@base2/pretty-print-object" "1.0.0" + is-plain-object "3.0.0" -react-error-overlay@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.6.tgz#0cd73407c5d141f9638ae1e0c63e7b2bf7e9929d" - integrity sha512-X1Y+0jR47ImDVr54Ab6V9eGk0Hnu7fVWGeHQSOXHf/C2pF9c6uy3gef8QUeuUiWlNb0i08InPSE5a/KJzNzw1Q== +react-error-overlay@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.5.tgz#55d59c2a3810e8b41922e0b4e5f85dcf239bd533" + integrity sha512-+DMR2k5c6BqMDSMF8hLH0vYKtKTeikiFW+fj0LClN+XZg4N9b8QUAdHC62CGWNLTi/gnuuemNcNcTFrCvK1f+A== -react-input-autosize@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8" - integrity sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA== +react-input-autosize@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" + integrity sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw== dependencies: prop-types "^15.5.8" -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" - integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" + integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-redux@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.0.3.tgz#983c5a6de81cb1e696bd1c090ba826545f9170f1" - integrity sha512-vYZA7ftOYlDk3NetitsI7fLjryt/widNl1SLXYvFenIpm7vjb4ryK0EeFrgn62usg5fYkyIAWNUPKnwWPevKLg== +react-redux@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.3.tgz#717a3d7bbe3a1b2d535c94885ce04cdc5a33fc79" + integrity sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w== dependencies: - "@babel/runtime" "^7.4.3" + "@babel/runtime" "^7.5.5" hoist-non-react-statics "^3.3.0" invariant "^2.2.4" loose-envify "^1.4.0" prop-types "^15.7.2" - react-is "^16.8.6" + react-is "^16.9.0" -react-router-dom@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.0.tgz#542a9b86af269a37f0b87218c4c25ea8dcf0c073" - integrity sha512-wSpja5g9kh5dIteZT3tUoggjnsa+TPFHSMrpHXMpFsaHhQkm/JNVGh2jiF9Dkh4+duj4MKCkwO6H08u6inZYgQ== +react-router-dom@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.1.2.tgz#06701b834352f44d37fbb6311f870f84c76b9c18" + integrity sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew== dependencies: "@babel/runtime" "^7.1.2" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.0.0" + react-router "5.1.2" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.0.0, react-router@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.0.tgz#349863f769ffc2fa10ee7331a4296e86bc12879d" - integrity sha512-6EQDakGdLG/it2x9EaCt9ZpEEPxnd0OCLBHQ1AcITAAx7nCnyvnzf76jKWG1s2/oJ7SSviUgfWHofdYljFexsA== +react-router@5.1.2, react-router@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.1.2.tgz#6ea51d789cb36a6be1ba5f7c0d48dd9e817d3418" + integrity sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A== dependencies: "@babel/runtime" "^7.1.2" - create-react-context "^0.2.2" history "^4.9.0" hoist-non-react-statics "^3.1.0" loose-envify "^1.3.1" + mini-create-react-context "^0.3.0" path-to-regexp "^1.7.0" prop-types "^15.6.2" react-is "^16.6.0" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-scripts@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.0.1.tgz#e5565350d8069cc9966b5998d3fe3befe3d243ac" - integrity sha512-LKEjBhVpEB+c312NeJhzF+NATxF7JkHNr5GhtwMeRS1cMeLElMeIu8Ye7WGHtDP7iz7ra4ryy48Zpo6G/cwWUw== - dependencies: - "@babel/core" "7.4.3" - "@svgr/webpack" "4.1.0" - "@typescript-eslint/eslint-plugin" "1.6.0" - "@typescript-eslint/parser" "1.6.0" - babel-eslint "10.0.1" - babel-jest "^24.8.0" - babel-loader "8.0.5" - babel-plugin-named-asset-import "^0.3.2" - babel-preset-react-app "^9.0.0" - camelcase "^5.2.0" - case-sensitive-paths-webpack-plugin "2.2.0" - css-loader "2.1.1" - dotenv "6.2.0" - dotenv-expand "4.2.0" - eslint "^5.16.0" - eslint-config-react-app "^4.0.1" - eslint-loader "2.1.2" - eslint-plugin-flowtype "2.50.1" - eslint-plugin-import "2.16.0" - eslint-plugin-jsx-a11y "6.2.1" - eslint-plugin-react "7.12.4" - eslint-plugin-react-hooks "^1.5.0" - file-loader "3.0.1" - fs-extra "7.0.1" - html-webpack-plugin "4.0.0-beta.5" +react-scripts@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.3.1.tgz#dee7962045dbee5b02b1d47569815e62f7a546b5" + integrity sha512-DHvc+/QN0IsLvmnPQqd+H70ol+gdFD3p/SS2tX8M6z1ysjtRGvOwLWy72co1nphYGpq1NqV/Ti5dviU8SCAXpA== + dependencies: + "@babel/core" "7.8.4" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" + babel-eslint "10.0.3" + babel-jest "^24.9.0" + babel-loader "8.0.6" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.1" + camelcase "^5.3.1" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "3.4.2" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^6.6.0" + eslint-config-react-app "^5.2.0" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.0" + eslint-plugin-jsx-a11y "6.2.3" + eslint-plugin-react "7.18.0" + eslint-plugin-react-hooks "^1.6.1" + file-loader "4.3.0" + fs-extra "^8.1.0" + html-webpack-plugin "4.0.0-beta.11" identity-obj-proxy "3.0.0" - is-wsl "^1.1.0" - jest "24.7.1" - jest-environment-jsdom-fourteen "0.1.0" - jest-resolve "24.7.1" - jest-watch-typeahead "0.3.0" - mini-css-extract-plugin "0.5.0" - optimize-css-assets-webpack-plugin "5.0.1" - pnp-webpack-plugin "1.2.1" + jest "24.9.0" + jest-environment-jsdom-fourteen "1.0.1" + jest-resolve "24.9.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.9.0" + optimize-css-assets-webpack-plugin "5.0.3" + pnp-webpack-plugin "1.6.0" postcss-flexbugs-fixes "4.1.0" postcss-loader "3.0.0" - postcss-normalize "7.0.1" - postcss-preset-env "6.6.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.1" - react-dev-utils "^9.0.1" - resolve "1.10.0" - sass-loader "7.1.0" - semver "6.0.0" - style-loader "0.23.1" - terser-webpack-plugin "1.2.3" - ts-pnp "1.1.2" - url-loader "1.1.2" - webpack "4.29.6" - webpack-dev-server "3.2.1" - webpack-manifest-plugin "2.0.4" - workbox-webpack-plugin "4.2.0" + react-app-polyfill "^1.0.6" + react-dev-utils "^10.1.0" + resolve "1.15.0" + resolve-url-loader "3.1.1" + sass-loader "8.0.2" + semver "6.3.0" + style-loader "1.1.3" + terser-webpack-plugin "2.3.4" + ts-pnp "1.1.5" + url-loader "2.3.0" + webpack "4.41.5" + webpack-dev-server "3.10.1" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "4.3.1" optionalDependencies: - fsevents "2.0.6" + fsevents "2.1.2" -react-select@^2.4.3: - version "2.4.4" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-2.4.4.tgz#ba72468ef1060c7d46fbb862b0748f96491f1f73" - integrity sha512-C4QPLgy9h42J/KkdrpVxNmkY6p4lb49fsrbDk/hRcZpX7JvZPNb6mGj+c5SzyEtBv1DmQ9oPH4NmhAFvCrg8Jw== +react-select@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.0.8.tgz#06ff764e29db843bcec439ef13e196865242e0c1" + integrity sha512-v9LpOhckLlRmXN5A6/mGGEft4FMrfaBFTGAnuPHcUgVId7Je42kTq9y0Z+Ye5z8/j0XDT3zUqza8gaRaI1PZIg== dependencies: - classnames "^2.2.5" - emotion "^9.1.2" + "@babel/runtime" "^7.4.4" + "@emotion/cache" "^10.0.9" + "@emotion/core" "^10.0.9" + "@emotion/css" "^10.0.9" memoize-one "^5.0.0" prop-types "^15.6.0" - raf "^3.4.0" - react-input-autosize "^2.2.1" + react-input-autosize "^2.2.2" react-transition-group "^2.2.1" +react-simple-maps@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/react-simple-maps/-/react-simple-maps-0.12.1.tgz#afc732362bb8eb2e5609a61d33bf6567d0fdd02a" + integrity sha512-htW2qQCnppGAUvWttf8ugZsVD896AfAjJNz3sgQT5zpdLNC+n2xegiNtn5inkD0aLuQWZ43i5cTlhPe0n6hvNQ== + dependencies: + d3-geo "1.6.3" + d3-geo-projection "1.2.2" + topojson-client "2.1.0" + +react-transition-group@4.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.3.0.tgz#fea832e386cf8796c58b61874a3319704f5ce683" + integrity sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-transition-group@^2.2.1: version "2.9.0" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" @@ -10808,15 +12190,14 @@ react-transition-group@^2.2.1: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react@^16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" - integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== +react@^16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" + integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.6" read-pkg-up@^1.0.1: version "1.0.1" @@ -10869,10 +12250,10 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -10893,9 +12274,9 @@ readable-stream@^1.0.33: string_decoder "~0.10.x" readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" - integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== + version "3.5.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.5.0.tgz#465d70e6d1087f6162d079cd0b5db7fbebfd1606" + integrity sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -10920,6 +12301,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -10942,28 +12330,28 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -redux-persist@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-5.10.0.tgz#5d8d802c5571e55924efc1c3a9b23575283be62b" - integrity sha512-sSJAzNq7zka3qVHKce1hbvqf0Vf5DuTVm7dr4GtsqQVOexnrvbV47RWFiPxQ8fscnyiuWyD2O92DOxPl0tGCRg== +redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== redux-thunk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== -redux@^4.0.0, redux@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" - integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== +redux@^4.0.0, redux@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== dependencies: loose-envify "^1.4.0" symbol-observable "^1.2.0" -regenerate-unicode-properties@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" - integrity sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ== +regenerate-unicode-properties@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== dependencies: regenerate "^1.4.0" @@ -10972,16 +12360,16 @@ regenerate@^1.2.1, regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@0.13.2, regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== - regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -10991,17 +12379,10 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regenerator-transform@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" - integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A== - dependencies: - private "^0.1.6" - regenerator-transform@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" - integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" + integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== dependencies: private "^0.1.6" @@ -11013,21 +12394,29 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479" - integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w== +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== -regexp-tree@^0.1.6: - version "0.1.10" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" - integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ== +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -11037,19 +12426,19 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== +regexpu-core@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" + integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" + regenerate-unicode-properties "^8.1.0" regjsgen "^0.5.0" regjsparser "^0.6.0" unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" -registry-auth-token@^3.4.0: +registry-auth-token@^3.0.1: version "3.4.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== @@ -11057,7 +12446,21 @@ registry-auth-token@^3.4.0: rc "^1.1.6" safe-buffer "^5.0.1" -registry-url@^5.0.0, registry-url@^5.1.0: +registry-auth-token@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" + integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + dependencies: + rc "^1.2.8" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + dependencies: + rc "^1.0.1" + +registry-url@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== @@ -11070,9 +12473,9 @@ regjsgen@^0.2.0: integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" - integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== regjsparser@^0.1.4: version "0.1.5" @@ -11082,22 +12485,13 @@ regjsparser@^0.1.4: jsesc "~0.5.0" regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + version "0.6.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" + integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== dependencies: jsesc "~0.5.0" -rehype-parse@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.0.tgz#f681555f2598165bee2c778b39f9073d17b16bca" - integrity sha512-V2OjMD0xcSt39G4uRdMTqDXXm6HwkUbLMDayYKA/d037j8/OtVSQ+tqKwYWOuyBeoCs/3clXRe30VUjeMDTBSA== - dependencies: - hast-util-from-parse5 "^5.0.0" - parse5 "^5.0.0" - xtend "^4.0.1" - -relateurl@0.2.x: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -11135,24 +12529,19 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== dependencies: - lodash "^4.17.11" + lodash "^4.17.15" request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== dependencies: - request-promise-core "1.1.2" + request-promise-core "1.1.3" stealthy-require "^1.1.1" tough-cookie "^2.3.3" @@ -11187,7 +12576,7 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.1, require-from-string@^2.0.2: +require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== @@ -11211,11 +12600,6 @@ requireg@^0.2.2: rc "~1.2.7" resolve "~1.7.1" -requireindex@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -11238,10 +12622,26 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-pathname@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" - integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" resolve-url@^0.2.1: version "0.2.1" @@ -11253,17 +12653,24 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.8.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0, resolve@~1.10.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" - integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== +resolve@~1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== dependencies: path-parse "^1.0.6" @@ -11281,12 +12688,12 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" resumer@~0.0.0: @@ -11301,6 +12708,29 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -11311,7 +12741,14 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -11326,18 +12763,17 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.3.tgz#7f94aef86cec412df87d5ea1d8cb116a47d45f0e" - integrity sha512-l6YVrI7+d2vpW6D6rS05x2Xrmq8oW7v3pieZOJKBEdjuTF4Kz/iwk55Zyh1Zaz+KOB2kC8+2jZlp2u9L4tTzCQ== +rlp@^2.0.0, rlp@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.4.tgz#d6b0e1659e9285fc509a5d169a9bd06f704951c1" + integrity sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw== dependencies: bn.js "^4.11.1" - safe-buffer "^5.1.1" rsvp@^4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" - integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA== + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0: version "2.3.0" @@ -11358,18 +12794,23 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.4.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4" - integrity sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg== +rxjs@^6.4.0, rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + safe-event-emitter@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" @@ -11404,6 +12845,11 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" @@ -11414,17 +12860,16 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" - integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== dependencies: - clone-deep "^2.0.1" - loader-utils "^1.0.1" - lodash.tail "^4.1.1" - neo-async "^2.5.0" - pify "^3.0.0" - semver "^5.5.0" + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" sax@^1.2.4, sax@~1.2.4: version "1.2.4" @@ -11432,16 +12877,16 @@ sax@^1.2.4, sax@~1.2.4: integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== saxes@^3.1.9: - version "3.1.9" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.9.tgz#c1c197cd54956d88c09f960254b999e192d7058b" - integrity sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw== + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== dependencies: - xmlchars "^1.3.1" + xmlchars "^2.1.1" -scheduler@^0.13.6: - version "0.13.6" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" - integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== +scheduler@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" + integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -11455,12 +12900,32 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.4.tgz#a27efbf6e4e78689d91872ee3ccfa57d7bdd0f53" + integrity sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ== + dependencies: + ajv "^6.10.2" + ajv-keywords "^3.4.1" + +scrypt-js@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" + integrity sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q= + scrypt-js@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== -scrypt.js@0.3.0: +"scrypt-shim@github:web3-js/scrypt-shim": + version "0.1.0" + resolved "https://codeload.github.com/web3-js/scrypt-shim/tar.gz/be5e616323a8b5e568788bf94d03c1b8410eac54" + dependencies: + scryptsy "^2.1.0" + semver "^6.3.0" + +scrypt.js@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.3.0.tgz#6c62d61728ad533c8c376a2e5e3e86d41a95c4c0" integrity sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A== @@ -11469,12 +12934,15 @@ scrypt.js@0.3.0: optionalDependencies: scrypt "^6.0.2" -scrypt@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/scrypt/-/scrypt-6.0.3.tgz#04e014a5682b53fa50c2d5cce167d719c06d870d" - integrity sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0= - dependencies: - nan "^2.0.8" +scrypt@^6.0.2, "scrypt@https://github.com/ren-forks/node-scrypt": + version "0.0.0" + uid "183a788e85f5865d52726a378cc8b2bee2c49b45" + resolved "https://github.com/ren-forks/node-scrypt#183a788e85f5865d52726a378cc8b2bee2c49b45" + +scryptsy@2.1.0, scryptsy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== scryptsy@^1.2.1: version "1.2.1" @@ -11491,31 +12959,38 @@ scss-tokenizer@^0.2.3: js-base64 "^2.1.8" source-map "^0.4.2" -secp256k1@^3.0.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.6.2.tgz#da835061c833c74a12f75c73d2ec2e980f00dc1f" - integrity sha512-90nYt7yb0LmI4A2jJs1grglkTAXrBwxYAjP9bpeKjvJKOjG2fOeH/YI/lchDMIvjrOasd5QXwvV2jwN168xNng== +secp256k1@^3.0.1, secp256k1@^3.5.2: + version "3.8.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== dependencies: - bindings "^1.2.1" - bip66 "^1.1.3" - bn.js "^4.11.3" - create-hash "^1.1.2" + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" drbg.js "^1.0.1" - elliptic "^6.2.3" - nan "^2.2.1" - safe-buffer "^5.1.0" + elliptic "^6.5.2" + nan "^2.14.0" + safe-buffer "^5.1.2" + +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + dependencies: + commander "~2.8.1" select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.9.1: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== dependencies: - node-forge "0.7.5" + node-forge "0.9.0" semaphore@>=1.0.1, semaphore@^1.0.3: version "1.1.0" @@ -11534,25 +13009,25 @@ semver-utils@^1.1.4: resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== +semver@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== -semver@6.0.0, semver@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" - integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== +semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" - integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== semver@~5.3.0: version "5.3.0" @@ -11564,10 +13039,52 @@ semver@~5.4.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +send-crypto@0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/send-crypto/-/send-crypto-0.1.9.tgz#72af3b469f97bba94617f261d802e515b282a373" + integrity sha512-jnfywNW98YBTi3Cks9fnQfg0jNwKkKEGtvXKSGEYjytY0Lz+OfnLNGRnU19TqyQcfTFJ8IU/jAzmUPFQfn1MbA== + dependencies: + "@truffle/hdwallet-provider" "^1.0.28" + "@types/bchaddrjs" "^0.4.0" + "@types/web3-provider-engine" "^14.0.0" + axios "^0.19.0" + bchaddrjs "^0.4.4" + bignumber.js "^9.0.0" + bitgo-utxo-lib "^1.7.0" + bn.js "^5.0.0" + dotenv "^8.2.0" + immutable "^4.0.0-rc.12" + patch-package "^6.2.0" + send-crypto "^0.1.6" + web3 "^1.2.4" + web3-core "^1.2.4" + web3-utils "^1.2.4" + +send-crypto@^0.1.6: + version "0.1.11" + resolved "https://registry.yarnpkg.com/send-crypto/-/send-crypto-0.1.11.tgz#2e055996811a9f4e5e1574360b5d4d2c0c163100" + integrity sha512-pGAvOZrEZyPcYmXTbweDfBw2eiqZY8xtQfYkWtzjd19F/9522q02JcpNmjjaKlBqH7ybjdZn0NzjBIE4+IPxXw== + dependencies: + "@truffle/hdwallet-provider" "^1.0.28" + "@types/bchaddrjs" "^0.4.0" + "@types/web3-provider-engine" "^14.0.0" + axios "^0.19.0" + bchaddrjs "^0.4.4" + bignumber.js "^9.0.0" + bitgo-utxo-lib "^1.7.0" + bn.js "^5.0.0" + dotenv "^8.2.0" + immutable "^4.0.0-rc.12" + patch-package "^6.2.0" + send-crypto "^0.1.6" + web3 "^1.2.4" + web3-core "^1.2.4" + web3-utils "^1.2.4" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: debug "2.6.9" depd "~1.1.2" @@ -11576,19 +13093,19 @@ send@0.16.2: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" + range-parser "~1.2.1" + statuses "~1.5.0" -serialize-javascript@^1.4.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serve-index@^1.7.2: +serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -11601,15 +13118,15 @@ serve-index@^1.7.2: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" + parseurl "~1.3.3" + send "0.17.1" servify@^0.1.12: version "0.1.12" @@ -11632,20 +13149,10 @@ set-immediate-shim@^1.0.1: resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -11680,12 +13187,12 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -sha3@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.2.tgz#a66c5098de4c25bc88336ec8b4817d005bca7ba9" - integrity sha1-pmxQmN5MJbyIM27ItIF9AFvKe6k= +sha3@^2.0.0, sha3@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.1.tgz#488c0f978a73ea540cc4f4a2235a77aed095c031" + integrity sha512-hj6dCLbWByenZarg2gb2VFD9zoY5kr/FMriDcbtVDLJ5geOWGOJCI0jQUjAzoY/ZHlkt8BSEbh9KJEDT8AGuJQ== dependencies: - nan "2.10.0" + buffer "5.4.3" shallow-clone@^0.1.2: version "0.1.2" @@ -11697,14 +13204,12 @@ shallow-clone@^0.1.2: lazy-cache "^0.2.3" mixin-object "^2.0.1" -shallow-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" - integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - is-extendable "^0.1.1" - kind-of "^5.0.0" - mixin-object "^2.0.1" + kind-of "^6.0.2" shebang-command@^1.2.0: version "1.2.0" @@ -11713,20 +13218,27 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shell-quote@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== shellwords@^0.1.1: version "0.1.1" @@ -11759,10 +13271,10 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" - integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== +sisteransi@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== slash@^1.0.0: version "1.0.0" @@ -11774,6 +13286,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -11783,6 +13300,11 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -11813,10 +13335,10 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== dependencies: debug "^3.2.5" eventsource "^1.0.7" @@ -11833,17 +13355,45 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + +solidity-parser-antlr@^0.4.11: + version "0.4.11" + resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz#af43e1f13b3b88309a875455f5d6e565b05ee5f1" + integrity sha512-4jtxasNGmyC0midtjH/lTFPZYvTTUMy6agYcF+HoMnzW8+cqo3piFrINb4ZCzpPW+7tTVFCGa5ubP34zOzeuMg== + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" @@ -11856,10 +13406,10 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.6, source-map-support@~0.5.10: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== +source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -11869,6 +13419,11 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -11876,26 +13431,11 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -space-separated-tokens@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.3.tgz#bc6500e116d13285a94b59b58c44c7f045fe6124" - integrity sha512-/M5RAdBuQlSDPNfA5ube+fkHbHyY08pMuADLmsAQURzo56w90r681oiOoz3o3ZQyWdSeNucpTFjL+Ggd5qui3w== - spawn-please@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/spawn-please/-/spawn-please-0.3.0.tgz#db338ec4cff63abc69f1d0e08cee9eb8bebd9d11" @@ -11923,9 +13463,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" - integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== spdy-transport@^3.0.0: version "3.0.0" @@ -11939,10 +13479,10 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== dependencies: debug "^4.1.0" handle-thing "^2.0.0" @@ -11950,6 +13490,15 @@ spdy@^4.0.0: select-hose "^2.0.0" spdy-transport "^3.0.0" +spinnies@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.4.3.tgz#2ea0ad148e78353ddf621dec3951a6f4c3cbf66e" + integrity sha512-TTA2vWXrXJpfThWAl2t2hchBnCMI1JM5Wmb2uyI7Zkefdw/xO98LDy6/SBYwQPiYXL3swx3Eb44ZxgoS8X5wpA== + dependencies: + chalk "^2.4.2" + cli-cursor "^3.0.0" + strip-ansi "^5.2.0" + split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" @@ -11982,13 +13531,21 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: +ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -12007,16 +13564,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - stdout-stream@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" @@ -12057,9 +13609,9 @@ stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== strict-uri-encode@^1.0.0: version "1.1.0" @@ -12079,6 +13631,14 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -12088,7 +13648,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -12096,7 +13656,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -12105,21 +13665,46 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trim@^1.1.2, string.prototype.trim@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" - integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trim@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" + integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~0.10.x: version "0.10.31" @@ -12133,15 +13718,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" - integrity sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg== - dependencies: - get-own-enumerable-property-symbols "^2.0.1" - is-obj "^1.0.1" - is-regexp "^1.0.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -12151,12 +13727,12 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - ansi-regex "^4.1.0" + ansi-regex "^5.0.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -12172,6 +13748,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -12192,6 +13775,13 @@ strip-comments@^1.0.2: babel-extract-comments "^1.0.0" babel-plugin-transform-object-rest-spread "^6.26.0" +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -12211,18 +13801,23 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== +style-loader@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" + integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.6.4" stylehacks@^4.0.0: version "4.0.3" @@ -12233,16 +13828,6 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylis-rule-sheet@^0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" - integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== - -stylis@^3.5.0: - version "3.5.4" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" - integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -12262,18 +13847,29 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -svgo@^1.0.0, svgo@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316" - integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA== +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svg-parser@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.3.tgz#a38f2e4e5442986f7ecb554c11f1411cfcf8c2b9" + integrity sha512-fnCWiifNhK8i2Z7b9R5tbNahpxrRdAaQbnoxKlT2KrSCj9Kq/yBSgulCRgBJRhy1dPnSY5slg5ehPUnzpEcHlg== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: chalk "^2.4.1" coa "^2.0.2" css-select "^2.0.0" css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.28" - css-url-regex "^1.1.0" - csso "^3.5.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" js-yaml "^3.13.1" mkdirp "~0.5.1" object.values "^1.1.0" @@ -12282,71 +13878,104 @@ svgo@^1.0.0, svgo@^1.2.1: unquote "~1.1.1" util.promisify "~1.0.0" +swarm-js@0.1.39: + version "0.1.39" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" + integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + decompress "^4.0.0" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request-promise "^0.1.2" + symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== symbol-tree@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^5.2.3: - version "5.4.0" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" - integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: - ajv "^6.9.1" - lodash "^4.17.11" + ajv "^6.10.2" + lodash "^4.17.14" slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.0: +tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tape@^4.6.3, tape@^4.8.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.10.1.tgz#f73be60888dcb120f08b57f947af65a829506a5f" - integrity sha512-G0DywYV1jQeY3axeYnXUOt6ktnxS9OPJh97FGR3nrua8lhWi1zPflLxcAHavZ7Jf3qUfY7cxcVIVFa4mY2IY1w== +tape@^4.6.3: + version "4.13.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.0.tgz#e2f581ff5f12a7cbd787e9f83c76c2851782fce2" + integrity sha512-J/hvA+GJnuWJ0Sj8Z0dmu3JgMNU+MmusvkCT7+SN4/2TklW18FNCp/UuHIEhPZwHfy4sXfKYgC7kypKg4umbOw== dependencies: - deep-equal "~1.0.1" + deep-equal "~1.1.1" defined "~1.0.0" + dotignore "~0.1.2" for-each "~0.3.3" function-bind "~1.1.1" - glob "~7.1.3" + glob "~7.1.6" has "~1.0.3" - inherits "~2.0.3" + inherits "~2.0.4" + is-regex "~1.0.5" minimist "~1.2.0" - object-inspect "~1.6.0" - resolve "~1.10.0" + object-inspect "~1.7.0" + resolve "~1.14.2" resumer "~0.0.0" - string.prototype.trim "~1.1.2" + string.prototype.trim "~1.2.1" through "~2.3.8" +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + tar@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== dependencies: block-stream "*" - fstream "^1.0.2" + fstream "^1.0.12" inherits "2" -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== +tar@^4.0.2, tar@^4.4.10: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" + minipass "^2.8.6" + minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" - yallist "^3.0.2" + yallist "^3.0.3" term-size@^1.2.0: version "1.2.0" @@ -12355,28 +13984,44 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -terser-webpack-plugin@1.2.3, terser-webpack-plugin@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" - integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== +terser-webpack-plugin@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz#ac045703bd8da0936ce910d8fb6350d0e1dee5fe" + integrity sha512-Nv96Nws2R2nrFOpbzF6IxRDpIkkIfmhvOws+IqMvYdFLO7o6wAILWFKONFgaYy8+T4LVz77DQW0f7wOeDEAjrg== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.2.0" + jest-worker "^25.1.0" + p-limit "^2.2.2" + schema-utils "^2.6.4" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.4.3" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: - cacache "^11.0.2" - find-cache-dir "^2.0.0" + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^1.4.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" - terser "^3.16.1" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" -terser@^3.16.1: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== +terser@^4.1.2, terser@^4.3.9, terser@^4.4.3: + version "4.6.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" + integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== dependencies: - commander "^2.19.0" + commander "^2.20.0" source-map "~0.6.1" - source-map-support "~0.5.10" + source-map-support "~0.5.12" test-exclude@^5.2.3: version "5.2.3" @@ -12406,25 +14051,25 @@ through2@^2.0.0, through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@~2.3.4, through@~2.3.8: +"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" - integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timed-out@^4.0.1: +timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== dependencies: setimmediate "^1.0.4" @@ -12434,14 +14079,14 @@ timsort@^0.3.0: integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-invariant@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.4.tgz#346b5415fd93cb696b0c4e8a96697ff590f92463" - integrity sha512-lMhRd/djQJ3MoaHEBrw8e2/uM4rs9YMNk0iOr8rHQ0QdbM7D4l0gFl3szKdeixrlyfm9Zqi4dxHCM2qVG8ND5g== + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== -tiny-warning@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.2.tgz#1dfae771ee1a04396bdfde27a3adcebc6b648b28" - integrity sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q== +tiny-warning@^1.0.0, tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== tmp@^0.0.33: version "0.0.33" @@ -12460,6 +14105,11 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -12490,6 +14140,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -12505,12 +14162,12 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -touch@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/touch/-/touch-2.0.2.tgz#ca0b2a3ae3211246a61b16ba9e6cbf1596287164" - integrity sha512-qjNtvsFXTRq7IuMLweVgFxmEuQ6gLbRs2jQxL80TtZ31dEKWYIxRXquij6w6VimyDek5hD3PytljHmEtAs2u0A== +topojson-client@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-2.1.0.tgz#ff9f7bf38991185e0b4284c2b06ae834f0eac6c8" + integrity sha1-/59784mRGF4LQoTCsGroNPDqxsg= dependencies: - nopt "~1.0.10" + commander "2" tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: version "2.5.0" @@ -12545,11 +14202,6 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -trough@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.3.tgz#e29bd1614c6458d44869fc28b255ab7857ef7c24" - integrity sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw== - "true-case-path@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" @@ -12557,23 +14209,45 @@ trough@^1.0.0: dependencies: glob "^7.1.2" -ts-pnp@1.1.2, ts-pnp@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.2.tgz#be8e4bfce5d00f0f58e0666a82260c34a57af552" - integrity sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA== +truffle-flattener@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.4.2.tgz#7460d0eec88ac67b150e8de3476f55d4420a4ba0" + integrity sha512-7qUIzaW8a4vI4nui14wsytht2oaqvqnZ1Iet2wRq2T0bCJ0wb6HByMKQhZKpU46R+n5BMTY4K5n+0ITyeNlmuQ== + dependencies: + "@resolver-engine/imports-fs" "^0.2.2" + find-up "^2.1.0" + mkdirp "^0.5.1" + solidity-parser-antlr "^0.4.11" + tsort "0.0.1" -ts-unused-exports@^2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/ts-unused-exports/-/ts-unused-exports-2.0.11.tgz#4c19c2a7d59662b51796a4eba1ce75681783fea1" - integrity sha512-c5NV9CpyEpY72Op5PTgNi2Wf9/esylBq6hTP0UiTMY+smADnQs8GgxLZwZWSAjlbXTXsg3mwv4HzU0b4jpc/lA== +ts-pnp@1.1.5, ts-pnp@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec" + integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA== + +ts-unused-exports@^5.1.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/ts-unused-exports/-/ts-unused-exports-5.5.0.tgz#23796fa6ea6303f9476f902aec811b22a5fc7f4c" + integrity sha512-eI2oXovQ/Yki1JC3T0zn09csYiMSAK09qr8Yd0DQISWBOSxvEBMmn9s1C9PIId5L2EoRnkWKNTfQ3nHT6iSUwA== + dependencies: + chalk "^3.0.0" + tsconfig-paths "^3.9.0" + typescript "^3.7.4" + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== dependencies: - strip-json-comments "^2.0.1" - typescript "^2.9.2" + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== tslint-microsoft-contrib@^6.2.0: version "6.2.0" @@ -12582,23 +14256,23 @@ tslint-microsoft-contrib@^6.2.0: dependencies: tsutils "^2.27.2 <2.29.0" -tslint-react@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-4.0.0.tgz#b4bb4c01c32448cb14d23f143a2f5e4989bb961e" - integrity sha512-9fNE0fm9zNDx1+b6hgy8rgDN2WsQLRiIrn3+fbqm0tazBVF6jiaCFAITxmU+WSFWYE03Xhp1joCircXOe1WVAQ== +tslint-react@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-4.2.0.tgz#41b16e0438365f8d3ed4120501f02cabff9fd1e4" + integrity sha512-lO22+FKr9ZZGueGiuALzvZE/8ANoDoCHGCknX1Ge3ALrfcLQHQ1VGdyb1scZXQFdEQEfwBTIU40r5BUlJpn0JA== dependencies: tsutils "^3.9.1" -tslint@^5.17.0: - version "5.17.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.17.0.tgz#f9f0ce2011d8e90debaa6e9b4975f24cd16852b8" - integrity sha512-pflx87WfVoYepTet3xLfDOLDm9Jqi61UXIKePOuca0qoAZyrGWonDG9VTbji58Fy+8gciUn8Bt7y69+KEVjc/w== +tslint@^5.20.1: + version "5.20.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" + integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== dependencies: "@babel/code-frame" "^7.0.0" builtin-modules "^1.1.1" chalk "^2.3.0" commander "^2.12.1" - diff "^3.2.0" + diff "^4.0.1" glob "^7.1.1" js-yaml "^3.13.1" minimatch "^3.0.4" @@ -12608,6 +14282,11 @@ tslint@^5.17.0: tslib "^1.8.0" tsutils "^2.29.0" +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= + "tsutils@^2.27.2 <2.29.0": version "2.28.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.28.0.tgz#6bd71e160828f9d019b6f4e844742228f85169a1" @@ -12622,17 +14301,10 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.7.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.13.0.tgz#904ae58d0d81a1d5c16112da7bca059f9283b0e2" - integrity sha512-wRtEjVU8Su72sDIDoqno5Scwt8x4eaF0teKO3m4hu8K1QFPnIZMM88CLafs2tapUeWnY9SwwO3bWeOt2uauBcg== - dependencies: - tslib "^1.8.1" - -tsutils@^3.9.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.10.0.tgz#6f1c95c94606e098592b0dff06590cf9659227d6" - integrity sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q== +tsutils@^3.17.1, tsutils@^3.9.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== dependencies: tslib "^1.8.1" @@ -12660,12 +14332,22 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== -type-is@~1.6.16, type-is@~1.6.17: +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -12673,7 +14355,17 @@ type-is@~1.6.16, type-is@~1.6.17: media-typer "0.3.0" mime-types "~2.1.24" -typedarray-to-buffer@^3.1.2, typedarray-to-buffer@^3.1.5: +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + +typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -12685,57 +14377,44 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typesafe-actions@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/typesafe-actions/-/typesafe-actions-4.4.0.tgz#217320465f5921f438adda1e9ff5da09182bb266" - integrity sha512-91ZsGX/Ojo2lMeRCMwrjohzuGQfB6T7VSkn5HkV6ij4Q4Okhe5eeAXAlUY7erI0sNRGSOWCA6L+lH3PkpD/NlA== - -typescript@^2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== - -typescript@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.1.tgz#ba72a6a600b2158139c5dd8850f700e231464202" - integrity sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw== - -ua-parser-js@^0.7.18: - version "0.7.19" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" - integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== +typeforce@^1.11.3: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" +typesafe-actions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/typesafe-actions/-/typesafe-actions-5.1.0.tgz#9afe8b1e6a323af1fd59e6a57b11b7dd6623d2f1" + integrity sha512-bna6Yi1pRznoo6Bz1cE6btB/Yy8Xywytyfrzu/wc+NFW3ZF0I+2iCGImhBsoYYCOWuICtRO4yHcnDlzgo1AdNg== -uglify-js@^3.1.4: - version "3.5.11" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.11.tgz#833442c0aa29b3a7d34344c7c63adaa3f3504f6a" - integrity sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg== - dependencies: - commander "~2.20.0" - source-map "~0.6.1" +typescript@^3.7.3, typescript@^3.7.4: + version "3.7.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" + integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -underscore@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= +unbzip2-stream@^1.0.9: + version "1.3.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" + integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" -underscore@^1.9.1: +underscore@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== +underscore@^1.9.1: + version "1.9.2" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" + integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -12759,29 +14438,15 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== -unified@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" - integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== - dependencies: - "@types/unist" "^2.0.0" - "@types/vfile" "^3.0.0" - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^3.0.0" - x-is-string "^0.1.0" - union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" - set-value "^0.4.3" + set-value "^2.0.1" uniq@^1.0.1: version "1.0.1" @@ -12801,9 +14466,9 @@ unique-filename@^1.1.1: unique-slug "^2.0.0" unique-slug@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" - integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" @@ -12814,23 +14479,16 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" - integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== - -unist-util-stringify-position@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.0.tgz#4c452c0dbcbc509f7bcd366e9a8afd646f9d51ae" - integrity sha512-Uz5negUTrf9zm2ZT2Z9kdOL7Mr7FJLyq3ByqagUi7QZRVK1HnspVazvSqwHt73jj7APHtpuJ4K110Jm8O6/elw== - dependencies: - "@types/unist" "^2.0.2" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +unorm@^1.3.3: + version "1.6.0" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -12849,15 +14507,41 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +unstated-next@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unstated-next/-/unstated-next-1.1.0.tgz#7bb4911a12fdf3cc8ad3eb11a0b315e4a8685ea8" + integrity sha512-AAn47ZncPvgBGOvMcn8tSRxsrqwf2VdAPxLASTuLJvZt4rhKfDvUkmYZLGfclImSfTVMv7tF4ynaVxin0JjDCA== + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= + upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-notifier@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.0.tgz#e9bbf8f0f5b7a2ce6666ca46334fdb29492e8fab" - integrity sha512-6Xe3oF2bvuoj4YECUc52yxVs94yWrxwqHbzyveDktTS1WhnlTRpNcQMxUshcB7nRVGi1jEXiqL5cW1S5WSyzKg== +update-notifier@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +update-notifier@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" + integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== dependencies: boxen "^3.0.0" chalk "^2.0.1" @@ -12889,14 +14573,21 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" url-parse-lax@^3.0.0: version "3.0.0" @@ -12926,6 +14617,11 @@ url-set-query@^1.0.0: resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -12944,12 +14640,17 @@ utf8@2.1.1: resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= +utf8@3.0.0, utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -12957,6 +14658,16 @@ util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -12986,11 +14697,21 @@ uuid@2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= -uuid@3.3.2, uuid@^3.0.1, uuid@^3.3.2: +uuid@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.0.1, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -12999,10 +14720,24 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-equal@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" - integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +varuint-bitcoin@^1.0.4: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" vary@^1, vary@~1.1.2: version "1.1.2" @@ -13010,9 +14745,9 @@ vary@^1, vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vendors@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" - integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== verror@1.10.0: version "1.10.0" @@ -13023,48 +14758,10 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" - -vfile-message@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.0.tgz#750bbb86fe545988a67e899b329bbcabb73edef6" - integrity sha512-YS6qg6UpBfIeiO+6XlhPOuJaoLvt1Y9g2cmlwqhBOOU0XRV8j5RLeoz72t6PWLvNXq3EBG1fQ05wNPrUoz0deQ== - dependencies: - "@types/unist" "^2.0.2" - unist-util-stringify-position "^1.1.1" - -vfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" - integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== - dependencies: - is-buffer "^2.0.0" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - -vfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.0.tgz#ebf3b48af9fcde524d5e08d5f75812058a5f78ad" - integrity sha512-WMNeHy5djSl895BqE86D7WqA0Ie5fAIeGCa7V1EqiXyJg5LaGch2SUaZueok5abYQGH6mXEAsZ45jkoILIOlyA== - dependencies: - "@types/unist" "^2.0.2" - is-buffer "^2.0.0" - replace-ext "1.0.0" - unist-util-stringify-position "^2.0.0" - vfile-message "^2.0.0" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== w3c-hr-time@^1.0.1: version "1.0.1" @@ -13097,7 +14794,7 @@ wallet-address-validator@^0.2.4: base-x "^3.0.4" jssha "2.3.1" -watchpack@^1.5.0: +watchpack@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== @@ -13113,100 +14810,354 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -web-namespaces@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.2.tgz#c8dc267ab639505276bae19e129dbd6ae72b22b4" - integrity sha512-II+n2ms4mPxK+RnIxRPOw3zwF2jRscdJIUE9BfkKHm4FYEg9+biIoTMnaZF5MpemE3T+VhMLrhbyD4ilkPCSbg== +web3-bzz@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" + integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== + dependencies: + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + +web3-bzz@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" + integrity sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA== + dependencies: + "@types/node" "^10.12.18" + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + +web3-bzz@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.6.tgz#0b88c0b96029eaf01b10cb47c4d5f79db4668883" + integrity sha512-9NiHLlxdI1XeFtbPJAmi2jnnIHVF+GNy517wvOS72P7ZfuJTPwZaSNXfT01vWgPPE9R96/uAHDWHOg+T4WaDQQ== + dependencies: + "@types/node" "^10.12.18" + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + +web3-core-helpers@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" + integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.1" + web3-utils "1.2.1" -web3-core-helpers@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" - integrity sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew== +web3-core-helpers@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" + integrity sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.2" + web3-utils "1.2.2" + +web3-core-helpers@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.6.tgz#7aacd25bf8015adcdfc0f3243d0dcfdff0373f7d" + integrity sha512-gYKWmC2HmO7RcDzpo4L1K8EIoy5L8iubNDuTC6q69UxczwqKF/Io0kbK/1Z10Av++NlzOSiuyGp2gc4t4UOsDw== dependencies: - underscore "1.8.3" - web3-eth-iban "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" + underscore "1.9.1" + web3-eth-iban "1.2.6" + web3-utils "1.2.6" -web3-core-helpers@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz#832b8499889f9f514b1d174f00172fd3683d63de" - integrity sha512-suj9Xy/lIqajaYLJTEjr2rlFgu6hGYwChHmf8+qNrC2luZA6kirTamtB9VThWMxbywx7p0bqQFjW6zXogAgWhg== +web3-core-helpers@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-2.0.0-alpha.1.tgz#d20db557fe8740578105fb6b5790eb22097d1974" + integrity sha512-YUDECwESRI2Bw3ijEaGGkYhEAyqQF17KFtul9Y6OZLtYx6W7bJCMKbSFigLl99F3zFLZ8E/dwzCizSrD+DuWIQ== dependencies: "@babel/runtime" "^7.3.1" lodash "^4.17.11" - web3-core "1.0.0-beta.55" - web3-eth-iban "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" + web3-core "2.0.0-alpha.1" + web3-eth-iban "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-core-method@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" + integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-utils "1.2.1" -web3-core-method@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz#0af994295ac2dd64ccd53305b7df8da76e11da49" - integrity sha512-w1cW/s2ji9qGELHk2uMJCn1ooay0JJLVoPD1nvmsW6OTRWcVjxa62nJrFQhe6P5lEb83Xk9oHgmCxZoVUHibOw== +web3-core-method@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" + integrity sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + web3-core-promievent "1.2.2" + web3-core-subscriptions "1.2.2" + web3-utils "1.2.2" + +web3-core-method@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.6.tgz#f5a3e4d304abaf382923c8ab88ec8eeef45c1b3b" + integrity sha512-r2dzyPEonqkBg7Mugq5dknhV5PGaZTHBZlS/C+aMxNyQs3T3eaAsCTqlQDitwNUh/sUcYPEGF0Vo7ahYK4k91g== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.6" + web3-core-promievent "1.2.6" + web3-core-subscriptions "1.2.6" + web3-utils "1.2.6" + +web3-core-method@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-2.0.0-alpha.1.tgz#6fd59cd229550bd08cb8922c095870fc9bf35f66" + integrity sha512-RlKYn9spgKAbIU9IV5UCQBLAcblLf5O6LYCGacRk0Iyz2SE0bVMtd7CY1pcsIXegNFiT3CPk+XvcpOIehZBhVQ== dependencies: "@babel/runtime" "^7.3.1" eventemitter3 "3.1.0" lodash "^4.17.11" rxjs "^6.4.0" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-subscriptions "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-subscriptions "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-core-promievent@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" + integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" -web3-core-promievent@^1.0.0-beta.48: - version "1.0.0-beta.48" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.48.tgz#1a441860ec86b0996431d50ccc4fe9de0d1dbc86" - integrity sha512-GNUnYUL0PUO/QzvlYxIlZW5Pra3jyjN6uHuUSDFRp59NbknluP470nTSC/+0XkvZrVTYADf0+04yyOlVM083Ug== +web3-core-promievent@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" + integrity sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ== dependencies: - "@babel/runtime" "^7.3.1" - eventemitter3 "^3.1.0" + any-promise "1.3.0" + eventemitter3 "3.1.2" + +web3-core-promievent@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.6.tgz#b1550a3a4163e48b8b704c1fe4b0084fc2dad8f5" + integrity sha512-km72kJef/qtQNiSjDJJVHIZvoVOm6ytW3FCYnOcCs7RIkviAb5JYlPiye0o4pJOLzCXYID7DK7Q9bhY8qWb1lw== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" + +web3-core-requestmanager@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" + integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-providers-http "1.2.1" + web3-providers-ipc "1.2.1" + web3-providers-ws "1.2.1" + +web3-core-requestmanager@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" + integrity sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + web3-providers-http "1.2.2" + web3-providers-ipc "1.2.2" + web3-providers-ws "1.2.2" + +web3-core-requestmanager@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.6.tgz#5808c0edc0d6e2991a87b65508b3a1ab065b68ec" + integrity sha512-QU2cbsj9Dm0r6om40oSwk8Oqbp3wTa08tXuMpSmeOTkGZ3EMHJ1/4LiJ8shwg1AvPMrKVU0Nri6+uBNCdReZ+g== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.6" + web3-providers-http "1.2.6" + web3-providers-ipc "1.2.6" + web3-providers-ws "1.2.6" + +web3-core-subscriptions@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" + integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.1" + +web3-core-subscriptions@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" + integrity sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.2" -web3-core-requestmanager@^1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" - integrity sha512-66VUqye5BGp1Zz1r8psCxdNH+GtTjaFwroum2Osx+wbC5oRjAiXkkadiitf6wRb+edodjEMPn49u7B6WGNuewQ== +web3-core-subscriptions@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.6.tgz#9d44189e2321f8f1abc31f6c09103b5283461b57" + integrity sha512-M0PzRrP2Ct13x3wPulFtc5kENH4UtnPxO9YxkfQlX2WRKENWjt4Rfq+BCVGYEk3rTutDfWrjfzjmqMRvXqEY5Q== dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" - web3-providers-http "1.0.0-beta.37" - web3-providers-ipc "1.0.0-beta.37" - web3-providers-ws "1.0.0-beta.37" + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.6" -web3-core-subscriptions@1.0.0-beta.55, web3-core-subscriptions@^1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz#105902c13db53466fc17d07a981ad3d41c700f76" - integrity sha512-pb3oQbUzK7IoyXwag8TYInQddg0rr7BHxKc+Pbs/92hVNQ5ps4iGMVJKezdrjlQ1IJEEUiDIglXl4LZ1hIuMkw== +web3-core-subscriptions@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-2.0.0-alpha.1.tgz#5c2164ce8649645f6809dcdc34626ae12ec0d19b" + integrity sha512-fOr5DCz1QjwBPf/ssJ49Q0LVi5PUOkHmJ1y+5aSSJZmcuAZ9h1FJp7ANqAI7p7ssXnm9RpCDMg5vGa8tyYyAXA== dependencies: "@babel/runtime" "^7.3.1" - eventemitter3 "^3.1.0" + eventemitter3 "^4.0.0" lodash "^4.17.11" -web3-core@1.0.0-beta.55, web3-core@^1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.55.tgz#26b9abbf1bc1837c9cc90f06ecbc4ed714f89b53" - integrity sha512-AMMp7TLEtE7u8IJAu/THrRhBTZyZzeo7Y6GiWYNwb5+KStC9hIGLr9cI1KX9R6ZioTOLRHrqT7awDhnJ1ku2mg== +web3-core@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" + integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== + dependencies: + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-requestmanager "1.2.1" + web3-utils "1.2.1" + +web3-core@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" + integrity sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ== + dependencies: + "@types/bn.js" "^4.11.4" + "@types/node" "^12.6.1" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-requestmanager "1.2.2" + web3-utils "1.2.2" + +web3-core@1.2.6, web3-core@^1.2.4: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.6.tgz#bb42a1d7ae49a7258460f0d95ddb00906f59ef92" + integrity sha512-y/QNBFtr5cIR8vxebnotbjWJpOnO8LDYEAzZjeRRUJh2ijmhjoYk7dSNx9ExgC0UCfNFRoNCa9dGRu/GAxwRlw== + dependencies: + "@types/bn.js" "^4.11.4" + "@types/node" "^12.6.1" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-core-requestmanager "1.2.6" + web3-utils "1.2.6" + +web3-core@2.0.0-alpha.1, web3-core@^2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-2.0.0-alpha.1.tgz#4bb87b860a0bbf9fd19ae380a4773e12ac3b3010" + integrity sha512-7fBl1h9Z46q0n8ugjYWMZsBP1tLlt8Rp4dRDF11EUNFQo1ll60tHj9PdjQIcKqoTd9EKhjYeZUWIsLf7YuipqA== dependencies: "@babel/runtime" "^7.3.1" "@types/bn.js" "^4.11.4" - "@types/node" "^10.12.18" + "@types/node" "^12.6.1" lodash "^4.17.11" - web3-core-method "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" + web3-core-method "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-eth-abi@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" + integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.1" + +web3-eth-abi@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" + integrity sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.2" + +web3-eth-abi@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.6.tgz#b495383cc5c0d8e2857b26e7fe25606685983b25" + integrity sha512-w9GAyyikn8nSifSDZxAvU9fxtQSX+W2xQWMmrtTXmBGCaE4/ywKOSPAO78gq8AoU4Wq5yqVGKZLLbfpt7/sHlA== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.6" -web3-eth-abi@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.55.tgz#69250420039346105a3d0f899c0a8a53be926f97" - integrity sha512-3h1xnm/vYmKUXTOYAOP0OsB5uijQV76pNNRGKOB6Dq6GR1pbcbD3WrB/4I643YA8l91t5FRzFzUiA3S77R2iqw== +web3-eth-abi@2.0.0-alpha.1, web3-eth-abi@^2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-2.0.0-alpha.1.tgz#cdcafcb9681c9a5be7917efbae838df4121c623f" + integrity sha512-EcNgLm8dHqjGN5IjgAAPIGFgBowO2FKQbdLzk6Zc7WY5kpRA/EcJen4PzVZpH1THfqpIlmHAV2YimYUTIz6cDQ== dependencies: "@babel/runtime" "^7.3.1" ethers "^4.0.27" lodash "^4.17.11" - web3-utils "1.0.0-beta.55" + web3-utils "2.0.0-alpha.1" + +web3-eth-accounts@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" + integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scryptsy "2.1.0" + semver "6.2.0" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +web3-eth-accounts@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" + integrity sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-shim "github:web3-js/scrypt-shim" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-utils "1.2.2" + +web3-eth-accounts@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.6.tgz#a1ba4bf75fa8102a3ec6cddd0eccd72462262720" + integrity sha512-cDVtonHRgzqi/ZHOOf8kfCQWFEipcfQNAMzXIaKZwc0UUD9mgSI5oJrN45a89Ze+E6Lz9m77cDG5Ax9zscSkcw== + dependencies: + "@web3-js/scrypt-shim" "^0.1.0" + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "^0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-utils "1.2.6" -web3-eth-accounts@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.55.tgz#ba734ffdc1e3cc8ac0ea01de5241323a0c2f69f3" - integrity sha512-VfzvwpSDHXqRVelIxsBVhgbV9BkFvhJ/q+bKhnVUUXV0JAhMK/7uC92TsqKk4EBYuqpHyZ1jjqrL4n03fMU7zw== +web3-eth-accounts@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-2.0.0-alpha.1.tgz#441363e6494d53219bc766ec1792f77c2c78f647" + integrity sha512-yvpF+PZFU3HP285lzq4QYglLny/1xJba+PbJmJ9NHepeZRrJj73jF172q3LlmpQh1CWjmWL8qlzdh/bwfdJIYA== dependencies: "@babel/runtime" "^7.3.1" browserify-cipher "^1.0.1" @@ -13214,128 +15165,347 @@ web3-eth-accounts@1.0.0-beta.55: lodash "^4.17.11" pbkdf2 "^3.0.17" randombytes "^2.1.0" - scrypt.js "0.3.0" + scryptsy "2.1.0" + semver "6.2.0" uuid "3.3.2" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" -web3-eth-contract@1.0.0-beta.55, web3-eth-contract@^1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.55.tgz#cd9e6727ff73d648ebe7cae17516e8aec5873c65" - integrity sha512-v6oB1wfH039/A5sTb4ZTKX++fcBTHEkuQGpq50ATIDoxP/UTz2+6S+iL+3sCJTsByPw2/Bni/HM7NmLkXqzg/Q== +web3-eth-contract@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" + integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-utils "1.2.1" + +web3-eth-contract@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" + integrity sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA== + dependencies: + "@types/bn.js" "^4.11.4" + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-promievent "1.2.2" + web3-core-subscriptions "1.2.2" + web3-eth-abi "1.2.2" + web3-utils "1.2.2" + +web3-eth-contract@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.6.tgz#39111543960035ed94c597a239cf5aa1da796741" + integrity sha512-ak4xbHIhWgsbdPCkSN+HnQc1SH4c856y7Ly+S57J/DQVzhFZemK5HvWdpwadJrQTcHET3ZeId1vq3kmW7UYodw== + dependencies: + "@types/bn.js" "^4.11.4" + underscore "1.9.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-core-promievent "1.2.6" + web3-core-subscriptions "1.2.6" + web3-eth-abi "1.2.6" + web3-utils "1.2.6" + +web3-eth-contract@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-2.0.0-alpha.1.tgz#803711aa7c8b8bccdc1b5f7a8e4dc07aa4dfb1aa" + integrity sha512-V/rzm0c0LopreTuGDCEwIQZ8lXTFjHV2XrGmIXfmUycyWVQ/Ulct/Ct9m7kRA/R/cfkf1ocSkyN8vj9i8a7Qag== dependencies: "@babel/runtime" "^7.3.1" "@types/bn.js" "^4.11.4" lodash "^4.17.11" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-core-subscriptions "1.0.0-beta.55" - web3-eth-abi "1.0.0-beta.55" - web3-eth-accounts "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" - -web3-eth-ens@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.55.tgz#4341434a3406728212d411ae7f22d4cf5b8642fe" - integrity sha512-jEL17coO0FJXb7KYq4+7DhVXj0Rh+wHfZ86jOvFUvJsRaUHfqK2TlMatuhD2mbrmxpBYb6oMPnXVnNK9bnD5Rg== + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-core-subscriptions "2.0.0-alpha.1" + web3-eth-abi "2.0.0-alpha.1" + web3-eth-accounts "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-eth-ens@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" + integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-contract "1.2.1" + web3-utils "1.2.1" + +web3-eth-ens@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" + integrity sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-promievent "1.2.2" + web3-eth-abi "1.2.2" + web3-eth-contract "1.2.2" + web3-utils "1.2.2" + +web3-eth-ens@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.6.tgz#bf86a624c4c72bc59913c2345180d3ea947e110d" + integrity sha512-8UEqt6fqR/dji/jBGPFAyBs16OJjwi0t2dPWXPyGXmty/fH+osnXwWXE4HRUyj4xuafiM5P1YkXMsPhKEadjiw== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-promievent "1.2.6" + web3-eth-abi "1.2.6" + web3-eth-contract "1.2.6" + web3-utils "1.2.6" + +web3-eth-ens@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-2.0.0-alpha.1.tgz#fef85d964e7c580342e10b4ee0560c6a89527232" + integrity sha512-bf6o8yWxdkxb+AieUYRQe1n6R5UvInGkNZCDx2T955UrpLL5Xexgm/WBJVanRTn5//YK4o8Iudj9N3SgdfU0sA== dependencies: "@babel/runtime" "^7.3.1" eth-ens-namehash "2.0.8" lodash "^4.17.11" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-eth-abi "1.0.0-beta.55" - web3-eth-accounts "1.0.0-beta.55" - web3-eth-contract "1.0.0-beta.55" - web3-net "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" - -web3-eth-iban@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" - integrity sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ== + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-eth-abi "2.0.0-alpha.1" + web3-eth-accounts "2.0.0-alpha.1" + web3-eth-contract "2.0.0-alpha.1" + web3-net "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-eth-iban@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" + integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== dependencies: - bn.js "4.11.6" - web3-utils "1.0.0-beta.37" + bn.js "4.11.8" + web3-utils "1.2.1" + +web3-eth-iban@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" + integrity sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.2" + +web3-eth-iban@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.6.tgz#0b22191fd1aa6e27f7ef0820df75820bfb4ed46b" + integrity sha512-TPMc3BW9Iso7H+9w+ytbqHK9wgOmtocyCD3PaAe5Eie50KQ/j7ThA60dGJnxItVo6yyRv5pZAYxPVob9x/fJlg== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.6" -web3-eth-iban@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz#15146a69de21addc99e7dbfb2920555b1e729637" - integrity sha512-a2Fxsb5Mssa+jiXgjUdIzJipE0175IcQXJbZLpKft2+zeSJWNTbaa3PQD2vPPpIM4W789q06N+f9Zc0Fyls+1g== +web3-eth-iban@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-2.0.0-alpha.1.tgz#79f1f6061b95b5bb64eb4243a6c65dadf542077c" + integrity sha512-I9oD+kjiF/RPYslndfr4UlhU/zdP67+LYG5dMx6zEM+KUmHdwQeMTp4w3NVZny7/pOtXA1w6dJJ2tL/OVfGkkw== dependencies: "@babel/runtime" "^7.3.1" bn.js "4.11.8" - web3-utils "1.0.0-beta.55" + web3-utils "2.0.0-alpha.1" + +web3-eth-personal@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" + integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== + dependencies: + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" -web3-eth-personal@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.55.tgz#76e9d2da1501ee3c686751e7c7df63cc11793a1d" - integrity sha512-H0mahLQx6Oj7lpgTamKAswr3rHChRUZijeWAar2Hj7BABQlLRKwx8n09nYhxggvvLYQNQS90JjvQue7rAo2LQQ== +web3-eth-personal@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" + integrity sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg== + dependencies: + "@types/node" "^12.6.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-net "1.2.2" + web3-utils "1.2.2" + +web3-eth-personal@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.6.tgz#47a0a0657ec04dd77f95451a6869d4751d324b6b" + integrity sha512-T2NUkh1plY8d7wePXSoHnaiKOd8dLNFaQfgBl9JHU6S7IJrG9jnYD9bVxLEgRUfHs9gKf9tQpDf7AcPFdq/A8g== + dependencies: + "@types/node" "^12.6.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-net "1.2.6" + web3-utils "1.2.6" + +web3-eth-personal@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-2.0.0-alpha.1.tgz#15da8f598411c2237c79699fb1e78fa1cf39db81" + integrity sha512-IqBerCcfYSmuRpzXki/M/FKVu+lNVGP+RvjeNoE5l6Qy5W1m5X2AeI+P3ekN/HAwUhLNRVlzO6fSlNy0UaQtgg== dependencies: "@babel/runtime" "^7.3.1" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-eth-accounts "1.0.0-beta.55" - web3-net "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" - -web3-eth@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.55.tgz#bb52150df0a77bd13511449a53793d4eb23ade6e" - integrity sha512-F3zJ9I1gOgQdNGfi2Dy2lmj6OqCMJoRN01XHhQZagq0HY1JYMfObtfMi5E3L+qsegsSddHbqp4YY57tKx6uxpA== + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-eth-accounts "2.0.0-alpha.1" + web3-net "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-eth@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" + integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-accounts "1.2.1" + web3-eth-contract "1.2.1" + web3-eth-ens "1.2.1" + web3-eth-iban "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + +web3-eth@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" + integrity sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA== + dependencies: + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-subscriptions "1.2.2" + web3-eth-abi "1.2.2" + web3-eth-accounts "1.2.2" + web3-eth-contract "1.2.2" + web3-eth-ens "1.2.2" + web3-eth-iban "1.2.2" + web3-eth-personal "1.2.2" + web3-net "1.2.2" + web3-utils "1.2.2" + +web3-eth@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.6.tgz#15a8c65fdde0727872848cae506758d302d8d046" + integrity sha512-ROWlDPzh4QX6tlGGGlAK6X4kA2n0/cNj/4kb0nNVWkRouGmYO0R8k6s47YxYHvGiXt0s0++FUUv5vAbWovtUQw== + dependencies: + underscore "1.9.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-core-subscriptions "1.2.6" + web3-eth-abi "1.2.6" + web3-eth-accounts "1.2.6" + web3-eth-contract "1.2.6" + web3-eth-ens "1.2.6" + web3-eth-iban "1.2.6" + web3-eth-personal "1.2.6" + web3-net "1.2.6" + web3-utils "1.2.6" + +web3-eth@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-2.0.0-alpha.1.tgz#d11ab4934a8b5d06de6823cebda2075510782139" + integrity sha512-XJro1RPdhxKLYaOhUsTU5TuEPVdGyWbuPOTuqGUFZjyVnJ2dd6ETQIwmz9q7A6cIoYy9XZhni99mJ3ILLZzrMg== dependencies: "@babel/runtime" "^7.3.1" ethereumjs-tx "^1.3.7" rxjs "^6.4.0" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-core-subscriptions "1.0.0-beta.55" - web3-eth-abi "1.0.0-beta.55" - web3-eth-accounts "1.0.0-beta.55" - web3-eth-contract "1.0.0-beta.55" - web3-eth-ens "1.0.0-beta.55" - web3-eth-iban "1.0.0-beta.55" - web3-eth-personal "1.0.0-beta.55" - web3-net "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" - -web3-net@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.55.tgz#daf24323df16a890a0bac6c6eda48b6e8c7e96ef" - integrity sha512-do2WY8+/GArJSWX7k/zZ7nBnV9Y3n6LhPYkwT3LeFqDzD515bKwlomaNC8hOaTc6UQyXIoPprYTK2FevL7jrZw== + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-core-subscriptions "2.0.0-alpha.1" + web3-eth-abi "2.0.0-alpha.1" + web3-eth-accounts "2.0.0-alpha.1" + web3-eth-contract "2.0.0-alpha.1" + web3-eth-ens "2.0.0-alpha.1" + web3-eth-iban "2.0.0-alpha.1" + web3-eth-personal "2.0.0-alpha.1" + web3-net "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-net@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" + integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +web3-net@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" + integrity sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw== + dependencies: + web3-core "1.2.2" + web3-core-method "1.2.2" + web3-utils "1.2.2" + +web3-net@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.6.tgz#035ca0fbe55282fda848ca17ebb4c8966147e5ea" + integrity sha512-hsNHAPddrhgjWLmbESW0KxJi2GnthPcow0Sqpnf4oB6+/+ZnQHU9OsIyHb83bnC1OmunrK2vf9Ye2mLPdFIu3A== + dependencies: + web3-core "1.2.6" + web3-core-method "1.2.6" + web3-utils "1.2.6" + +web3-net@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-2.0.0-alpha.1.tgz#5b3d685b7d90734be27d00418648ed4d0f5d5bad" + integrity sha512-hdqGElUjLSiY3KRsy3YhtugSSCI22UA2p99BtD10GtYmziTEaQGnx5g+T/TWomOHW4wSMNy/QIFsiGL8ZVF5Ig== dependencies: "@babel/runtime" "^7.3.1" lodash "^4.17.11" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" -web3-provider-engine@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-15.0.0.tgz#3331ab0b46af936e4071ea233ec33049936b4c4d" - integrity sha512-T39JS4Wgh2+J5W4KztmuHd7QdElhvfxTxLI1WUb3M0IIzqio2WR89AN8YLz40Ssv6T4mW1QuiFbopQJGeUrvJg== +"web3-provider-engine@https://github.com/trufflesuite/provider-engine#web3-one": + version "14.0.6" + resolved "https://github.com/trufflesuite/provider-engine#3538c60bc4836b73ccae1ac3f64c8fed8ef19c1a" dependencies: async "^2.5.0" backoff "^2.5.0" clone "^2.0.0" cross-fetch "^2.1.0" - eth-block-tracker "^4.2.0" - eth-json-rpc-filters "^4.0.2" + eth-block-tracker "^3.0.0" eth-json-rpc-infura "^3.1.0" - eth-json-rpc-middleware "^4.1.1" eth-sig-util "^1.4.2" ethereumjs-block "^1.2.2" ethereumjs-tx "^1.2.0" @@ -13351,84 +15521,194 @@ web3-provider-engine@^15.0.0: xhr "^2.2.0" xtend "^4.0.1" -web3-providers-http@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" - integrity sha512-FM/1YDB1jtZuTo78habFj7S9tNHoqt0UipdyoQV29b8LkGKZV9Vs3is8L24hzuj1j/tbwkcAH+ewIseHwu0DTg== +web3-providers-http@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" + integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== + dependencies: + web3-core-helpers "1.2.1" + xhr2-cookies "1.1.0" + +web3-providers-http@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" + integrity sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg== + dependencies: + web3-core-helpers "1.2.2" + xhr2-cookies "1.1.0" + +web3-providers-http@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.6.tgz#3c7b1252751fb37e53b873fce9dbb6340f5e31d9" + integrity sha512-2+SaFCspb5f82QKuHB3nEPQOF9iSWxRf7c18fHtmnLNVkfG9SwLN1zh67bYn3tZGUdOI3gj8aX4Uhfpwx9Ezpw== dependencies: - web3-core-helpers "1.0.0-beta.37" + web3-core-helpers "1.2.6" xhr2-cookies "1.1.0" -web3-providers-ipc@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" - integrity sha512-NdRPRxYMIU0C3u18NI8u4bwbhI9pCg5nRgDGYcmSAx5uOBxiYcQy+hb0WkJRRhBoyIXJmy+s26FoH8904+UnPg== +web3-providers-ipc@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" + integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.1" + +web3-providers-ipc@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" + integrity sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.2" + +web3-providers-ipc@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.6.tgz#adabab5ac66b3ff8a26c7dc97af3f1a6a7609701" + integrity sha512-b0Es+/GTZyk5FG3SgUDW+2/mBwJAXWt5LuppODptiOas8bB2khLjG6+Gm1K4uwOb+1NJGPt5mZZ8Wi7vibtQ+A== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.6" + +web3-providers-ws@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" + integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + +web3-providers-ws@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" + integrity sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA== dependencies: - oboe "2.1.3" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" + underscore "1.9.1" + web3-core-helpers "1.2.2" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" -web3-providers-ws@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" - integrity sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw== +web3-providers-ws@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.6.tgz#3cecc49f7c99f07a75076d3c54247050bc4f7e11" + integrity sha512-20waSYX+gb5M5yKhug5FIwxBBvkKzlJH7sK6XEgdOx6BZ9YYamLmvg9wcRVtnSZO8hV/3cWenO/tRtTrHVvIgQ== dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" - websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" + "@web3-js/websocket" "^1.0.29" + underscore "1.9.1" + web3-core-helpers "1.2.6" -web3-providers@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-1.0.0-beta.55.tgz#639503517741b69baaa82f1f940630df6a25992b" - integrity sha512-MNifc7W+iF6rykpbDR1MuX152jshWdZXHAU9Dk0Ja2/23elhIs4nCWs7wOX9FHrKgdrQbscPoq0uy+0aGzyWVQ== +web3-providers@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-2.0.0-alpha.1.tgz#19486aed4b014ec5d7687fac4eef2042db8b338c" + integrity sha512-X7hDkLKVN1U5aWeNQeErev494VSgt4gHJpHTgXn2rxrdJYUf7+6e6Al7yvRHlDxoTzhycX+j11HQC+CZlA+uhQ== dependencies: "@babel/runtime" "^7.3.1" "@types/node" "^10.12.18" eventemitter3 "3.1.0" lodash "^4.17.11" url-parse "1.4.4" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" - websocket "^1.0.28" + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" xhr2-cookies "1.1.0" -web3-shh@1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.55.tgz#56f152ebcefb791dab86d2e6f1c296f8c1553644" - integrity sha512-lGP2HQ/1ThNnfoU8677aL48KsTx4Ht+2KQIn39dGpxVZqysQmovQIltbymVnAr4h8wofwcEz46iNHGa+PAyNzA== +web3-shh@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" + integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-net "1.2.1" + +web3-shh@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" + integrity sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg== + dependencies: + web3-core "1.2.2" + web3-core-method "1.2.2" + web3-core-subscriptions "1.2.2" + web3-net "1.2.2" + +web3-shh@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.6.tgz#2492616da4cac32d4c7534b890f43bac63190c14" + integrity sha512-rouWyOOM6YMbLQd65grpj8BBezQfgNeRRX+cGyW4xsn6Xgu+B73Zvr6OtA/ftJwwa9bqHGpnLrrLMeWyy4YLUw== + dependencies: + web3-core "1.2.6" + web3-core-method "1.2.6" + web3-core-subscriptions "1.2.6" + web3-net "1.2.6" + +web3-shh@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-2.0.0-alpha.1.tgz#e555dd00f8600270ecdeff465ab54cc07b5d3e6e" + integrity sha512-Be6nizwB9ZQ/oCy1smPE30Y6rTDxjV+zmW+89kk1e9B6nLuTQwE/5DoHUU5+7AzfouKZcMI2QMH3Kf6M8BpalQ== dependencies: "@babel/runtime" "^7.3.1" - web3-core "1.0.0-beta.55" - web3-core-helpers "1.0.0-beta.55" - web3-core-method "1.0.0-beta.55" - web3-core-subscriptions "1.0.0-beta.55" - web3-net "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" - -web3-utils@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" - integrity sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ== + web3-core "2.0.0-alpha.1" + web3-core-helpers "2.0.0-alpha.1" + web3-core-method "2.0.0-alpha.1" + web3-core-subscriptions "2.0.0-alpha.1" + web3-net "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3-utils@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" + integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== dependencies: - bn.js "4.11.6" - eth-lib "0.1.27" + bn.js "4.11.8" + eth-lib "0.2.7" ethjs-unit "0.1.6" number-to-bn "1.7.0" randomhex "0.1.5" - underscore "1.8.3" - utf8 "2.1.1" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" + integrity sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" -web3-utils@1.0.0-beta.55, web3-utils@^1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.55.tgz#beb40926b7c04208b752d36a9bc959d27a04b308" - integrity sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg== +web3-utils@1.2.6, web3-utils@^1.2.4: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.6.tgz#b9a25432da00976457fcc1094c4af8ac6d486db9" + integrity sha512-8/HnqG/l7dGmKMgEL9JeKPTtjScxOePTzopv5aaKFExPfaBrYRkgoMqhoowCiAl/s16QaTn4DoIF1QC4YsT7Mg== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-2.0.0-alpha.1.tgz#231442adea3b58bca0c7185ee5b7743c01938682" + integrity sha512-xZY9rPC/5S2utQV26x2oeWlBjs1cGwO+AAwv0smK2zjNi6UeTZjG9aZ/RJZJpToIapKhdtmQI6yZ8/ZQNDRGGg== dependencies: "@babel/runtime" "^7.3.1" "@types/bn.js" "^4.11.4" - "@types/node" "^10.12.18" + "@types/node" "^12.6.1" bn.js "4.11.8" eth-lib "0.2.8" ethjs-unit "^0.1.6" @@ -13437,71 +15717,116 @@ web3-utils@1.0.0-beta.55, web3-utils@^1.0.0-beta.55: randombytes "^2.1.0" utf8 "2.1.1" -web3@^1.0.0-beta.55: - version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.55.tgz#8845075129299da172c2eb41a748c8a87c2a2b5a" - integrity sha512-yJpwy4IUA3T/F9hWzYQVn0GbJCrAaZ0KTIO3iuqkhaYH0Y09KV7k4GzFi4hN7hT4cFTj4yIKaeVCwQ5kzvi2Vg== +web3@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" + integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== + dependencies: + web3-bzz "1.2.1" + web3-core "1.2.1" + web3-eth "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-shh "1.2.1" + web3-utils "1.2.1" + +web3@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.2.tgz#b1b8b69aafdf94cbaeadbb68a8aa1df2ef266aec" + integrity sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg== + dependencies: + "@types/node" "^12.6.1" + web3-bzz "1.2.2" + web3-core "1.2.2" + web3-eth "1.2.2" + web3-eth-personal "1.2.2" + web3-net "1.2.2" + web3-shh "1.2.2" + web3-utils "1.2.2" + +web3@2.0.0-alpha.1, web3@^2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-2.0.0-alpha.1.tgz#cfc0cef8c94d312ae943f268d6b42ebada521150" + integrity sha512-njwdP8MsziYYu9BGXvq9326xViWe6Q4/I/sq/AKOqfLWgLhAJ9xYkP8U6v0AclNE8Ow447dV3b9eK3sOLS1/WQ== dependencies: "@babel/runtime" "^7.3.1" - "@types/node" "^10.12.18" - web3-core "1.0.0-beta.55" - web3-eth "1.0.0-beta.55" - web3-eth-personal "1.0.0-beta.55" - web3-net "1.0.0-beta.55" - web3-providers "1.0.0-beta.55" - web3-shh "1.0.0-beta.55" - web3-utils "1.0.0-beta.55" + "@types/node" "^12.6.1" + web3-core "2.0.0-alpha.1" + web3-eth "2.0.0-alpha.1" + web3-eth-personal "2.0.0-alpha.1" + web3-net "2.0.0-alpha.1" + web3-providers "2.0.0-alpha.1" + web3-shh "2.0.0-alpha.1" + web3-utils "2.0.0-alpha.1" + +web3@^1.2.4: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.6.tgz#c497dcb14cdd8d6d9fb6b445b3b68ff83f8ccf68" + integrity sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA== + dependencies: + "@types/node" "^12.6.1" + web3-bzz "1.2.6" + web3-core "1.2.6" + web3-eth "1.2.6" + web3-eth-personal "1.2.6" + web3-net "1.2.6" + web3-shh "1.2.6" + web3-utils "1.2.6" webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-dev-middleware@^3.5.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" - integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: memory-fs "^0.4.1" - mime "^2.4.2" + mime "^2.4.4" + mkdirp "^0.5.1" range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e" - integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw== +webpack-dev-server@3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" + integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.0.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" debug "^4.1.1" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" - http-proxy-middleware "^0.19.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" import-local "^2.0.0" - internal-ip "^4.2.0" + internal-ip "^4.3.0" ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.6" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" schema-utils "^1.0.0" - selfsigned "^1.9.1" - semver "^5.6.0" - serve-index "^1.7.2" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.0" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.5.1" + webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" - yargs "12.0.2" + ws "^6.2.1" + yargs "12.0.5" webpack-log@^2.0.0: version "2.0.0" @@ -13511,59 +15836,60 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz#e4ca2999b09557716b8ba4475fb79fab5986f0cd" - integrity sha512-nejhOHexXDBKQOj/5v5IZSfCeTO3x1Dt1RZEcGfBSul891X/eLIcIVH31gwxPDdsi2Z8LKKFGpM4w9+oTBOSCg== +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== dependencies: fs-extra "^7.0.0" lodash ">=3.5 <5" + object.entries "^1.1.0" tapable "^1.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.29.6: - version "4.29.6" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.6.tgz#66bf0ec8beee4d469f8b598d3988ff9d8d90e955" - integrity sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw== +webpack@4.41.5: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" "@webassemblyjs/wasm-edit" "1.8.5" "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" + eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== dependencies: - http-parser-js ">=0.4.0" + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: @@ -13571,25 +15897,16 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== -websocket@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.28.tgz#9e5f6fdc8a3fe01d4422647ef93abdd8d45a78d3" - integrity sha512-00y/20/80P7H4bCYkzuuvvfDvh+dgtXi5kzDf3UcZwN6boTYaKvsrtZ5lIYm1Gsg48siMErd9M4zjSYfYFHTrA== +"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": + version "1.0.29" + resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/905deb4812572b344f5801f8c9ce8bb02799d82e" dependencies: debug "^2.2.0" - nan "^2.11.0" + es5-ext "^0.10.50" + nan "^2.14.0" typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" -"websocket@git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible": - version "1.0.26" - resolved "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" - dependencies: - debug "^2.2.0" - nan "^2.3.3" - typedarray-to-buffer "^3.1.2" - yaeti "^0.0.6" - whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -13602,7 +15919,7 @@ whatwg-fetch@2.0.4: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== -whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: +whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== @@ -13622,9 +15939,9 @@ whatwg-url@^6.4.1: webidl-conversions "^4.0.2" whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -13647,6 +15964,13 @@ which@1, which@^1.2.9, which@^1.3.0, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -13661,15 +15985,17 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= +wif@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha1-CNP1IFbGZnkplyb63g1DKudLRwQ= + dependencies: + bs58check "<3.0.0" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== workbox-background-sync@^4.3.1: version "4.3.1" @@ -13685,7 +16011,7 @@ workbox-broadcast-update@^4.3.1: dependencies: workbox-core "^4.3.1" -workbox-build@^4.2.0: +workbox-build@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== @@ -13790,14 +16116,14 @@ workbox-sw@^4.3.1: resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== -workbox-webpack-plugin@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.2.0.tgz#c94c3f69ff39c8a5b0c7e6bebc382cb53410a63d" - integrity sha512-YZsiA+y/ns/GdWRaBsfYv8dln1ebWtGnJcTOg1ppO0pO1tScAHX0yGtHIjndxz3L/UUhE8b0NQE9KeLNwJwA5A== +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== dependencies: "@babel/runtime" "^7.0.0" json-stable-stringify "^1.0.1" - workbox-build "^4.2.0" + workbox-build "^4.3.1" workbox-window@^4.3.1: version "4.3.1" @@ -13806,7 +16132,7 @@ workbox-window@^4.3.1: dependencies: workbox-core "^4.3.1" -worker-farm@^1.5.2: +worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== @@ -13828,6 +16154,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -13843,9 +16178,9 @@ write-file-atomic@2.4.1: signal-exit "^3.0.2" write-file-atomic@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" - integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -13874,18 +16209,13 @@ ws@^5.1.1, ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.2: +ws@^6.1.2, ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== dependencies: async-limiter "~1.0.0" -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" @@ -13933,25 +16263,20 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" - integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw== +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== xtend@~2.1.1: version "2.1.2" @@ -13980,17 +16305,22 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== dependencies: - camelcase "^4.1.0" + "@babel/runtime" "^7.6.3" yargs-parser@^11.1.1: version "11.1.1" @@ -14000,6 +16330,14 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -14007,13 +16345,13 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" - decamelize "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -14023,25 +16361,23 @@ yargs@12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + yargs-parser "^11.1.1" -yargs@^12.0.2: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" + cliui "^5.0.0" find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^3.0.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + y18n "^4.0.0" + yargs-parser "^13.1.1" yargs@^7.0.0: version "7.1.0" @@ -14061,3 +16397,11 @@ yargs@^7.0.0: which-module "^1.0.0" y18n "^3.2.1" yargs-parser "^5.0.0" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0"