Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Initial commit
Alexis Sellier committed 5 years ago
commit 3a1625e7754a6f53fc5f63973ede972da5e15c25
28 files changed +2650 -0
added .gitignore
@@ -0,0 +1,2 @@
+
build/
+
node_modules/
added LICENSE
@@ -0,0 +1,21 @@
+
MIT License
+

+
Copyright (c) 2019 Fred K. Schott
+

+
Permission is hereby granted, free of charge, to any person obtaining a copy
+
of this software and associated documentation files (the "Software"), to deal
+
in the Software without restriction, including without limitation the rights
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
copies of the Software, and to permit persons to whom the Software is
+
furnished to do so, subject to the following conditions:
+

+
The above copyright notice and this permission notice shall be included in all
+
copies or substantial portions of the Software.
+

+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
SOFTWARE.
added NOTES
@@ -0,0 +1,8 @@
+

+
//
+
// makeCommitment(
+
//    "cloudhead",
+
//    "0xA7d771818875E063c6F1848585aC36EE5C5c30bA",
+
//    "0x918ba47fd4eda9ec3098405037f15bb24af9c0b77b819a1aa01c9e6044831720"
+
// ) == "0xdb2f22ba087a23702d575cdc5173195bc0d041fd01df208851cb19aba412ae09"
+
//
added README.md
@@ -0,0 +1,20 @@
+
# Radicle Vesting
+

+
> ✨ Interact with your Radicle Vesting contract!
+

+
## Available Scripts
+

+
### npm start
+

+
Runs the app in the development mode.
+
Open http://localhost:8080 to view it in the browser.
+

+
The page will reload if you make edits.
+
You will also see any lint errors in the console.
+

+
### npm run build
+

+
Builds a static copy of your site to the `build/` folder.
+
Your app is ready to be deployed!
+

+
**For the best production performance:** Add a build bundler plugin like [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/main/plugins/plugin-webpack) or [snowpack-plugin-rollup-bundle](https://github.com/ParamagicDev/snowpack-plugin-rollup-bundle) to your `snowpack.config.json` config file.
added package-lock.json
@@ -0,0 +1,1769 @@
+
{
+
  "name": "radicle-registrar",
+
  "lockfileVersion": 2,
+
  "requires": true,
+
  "packages": {
+
    "": {
+
      "dependencies": {
+
        "ethers": "^5.0.31",
+
        "svelte": "^3.32.3"
+
      },
+
      "devDependencies": {
+
        "@snowpack/plugin-svelte": "^3.5.2",
+
        "snowpack": "^3.0.1"
+
      }
+
    },
+
    "node_modules/@ethersproject/abi": {
+
      "version": "5.0.12",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.12.tgz",
+
      "integrity": "sha512-Ujr/3bwyYYjXLDQfebeiiTuvOw9XtUKM8av6YkoBeMXyGQM9GkjrQlwJMNwGTmqjATH/ZNbRgCh98GjOLiIB1Q==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/abstract-provider": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.9.tgz",
+
      "integrity": "sha512-X9fMkqpeu9ayC3JyBkeeZhn35P4xQkpGX/l+FrxDtEW9tybf/UWXSMi8bGThpPtfJ6q6U2LDetXSpSwK4TfYQQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/networks": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/web": "^5.0.12"
+
      }
+
    },
+
    "node_modules/@ethersproject/abstract-signer": {
+
      "version": "5.0.13",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.13.tgz",
+
      "integrity": "sha512-VBIZEI5OK0TURoCYyw0t3w+TEO4kdwnI9wvt4kqUwyxSn3YCRpXYVl0Xoe7XBR/e5+nYOi2MyFGJ3tsFwONecQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7"
+
      }
+
    },
+
    "node_modules/@ethersproject/address": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.10.tgz",
+
      "integrity": "sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/rlp": "^5.0.7"
+
      }
+
    },
+
    "node_modules/@ethersproject/base64": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.8.tgz",
+
      "integrity": "sha512-PNbpHOMgZpZ1skvQl119pV2YkCPXmZTxw+T92qX0z7zaMFPypXWTZBzim+hUceb//zx4DFjeGT4aSjZRTOYThg==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9"
+
      }
+
    },
+
    "node_modules/@ethersproject/basex": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.0.8.tgz",
+
      "integrity": "sha512-PCVKZIShBQUqAXjJSvaCidThPvL0jaaQZcewJc0sf8Xx05BizaOS8r3jdPdpNdY+/qZtRDqwHTSKjvR/xssyLQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/properties": "^5.0.7"
+
      }
+
    },
+
    "node_modules/@ethersproject/bignumber": {
+
      "version": "5.0.14",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.14.tgz",
+
      "integrity": "sha512-Q4TjMq9Gg3Xzj0aeJWqJgI3tdEiPiET7Y5OtNtjTAODZ2kp4y9jMNg97zVcvPedFvGROdpGDyCI77JDFodUzOw==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "bn.js": "^4.4.0"
+
      }
+
    },
+
    "node_modules/@ethersproject/bytes": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.10.tgz",
+
      "integrity": "sha512-vpu0v1LZ1j1s9kERQIMnVU69MyHEzUff7nqK9XuCU4vx+AM8n9lU2gj7jtJIvGSt9HzatK/6I6bWusI5nyuaTA==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/constants": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.9.tgz",
+
      "integrity": "sha512-2uAKH89UcaJP/Sc+54u92BtJtZ4cPgcS1p0YbB1L3tlkavwNvth+kNCUplIB1Becqs7BOZr0B/3dMNjhJDy4Dg==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bignumber": "^5.0.13"
+
      }
+
    },
+
    "node_modules/@ethersproject/contracts": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.0.11.tgz",
+
      "integrity": "sha512-FTUUd/6x00dYL2VufE2VowZ7h3mAyBfCQMGwI3tKDIWka+C0CunllFiKrlYCdiHFuVeMotR65dIcnzbLn72MCw==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abi": "^5.0.10",
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7"
+
      }
+
    },
+
    "node_modules/@ethersproject/hash": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.11.tgz",
+
      "integrity": "sha512-H3KJ9fk33XWJ2djAW03IL7fg3DsDMYjO1XijiUb1hJ85vYfhvxu0OmsU7d3tg2Uv1H1kFSo8ghr3WFQ8c+NL3g==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/hdnode": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.0.9.tgz",
+
      "integrity": "sha512-S5UMmIC6XfFtqhUK4uTjD8GPNzSbE+sZ/0VMqFnA3zAJ+cEFZuEyhZDYnl2ItGJzjT4jsy+uEy1SIl3baYK1PQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/basex": "^5.0.7",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/pbkdf2": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/sha2": "^5.0.7",
+
        "@ethersproject/signing-key": "^5.0.8",
+
        "@ethersproject/strings": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/wordlists": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/json-wallets": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.0.11.tgz",
+
      "integrity": "sha512-0GhWScWUlXXb4qJNp0wmkU95QS3YdN9UMOfMSEl76CRANWWrmyzxcBVSXSBu5iQ0/W8wO+xGlJJ3tpA6v3mbIw==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/hdnode": "^5.0.8",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/pbkdf2": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/random": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "aes-js": "3.0.0",
+
        "scrypt-js": "3.0.1"
+
      }
+
    },
+
    "node_modules/@ethersproject/keccak256": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.8.tgz",
+
      "integrity": "sha512-zoGbwXcWWs9MX4NOAZ7N0hhgIRl4Q/IO/u9c/RHRY4WqDy3Ywm0OLamEV53QDwhjwn3YiiVwU1Ve5j7yJ0a/KQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "js-sha3": "0.5.7"
+
      }
+
    },
+
    "node_modules/@ethersproject/logger": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.9.tgz",
+
      "integrity": "sha512-kV3Uamv3XOH99Xf3kpIG3ZkS7mBNYcLDM00JSDtNgNB4BihuyxpQzIZPRIDmRi+95Z/R1Bb0X2kUNHa/kJoVrw==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ]
+
    },
+
    "node_modules/@ethersproject/networks": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.8.tgz",
+
      "integrity": "sha512-PYpptlO2Tu5f/JEBI5hdlMds5k1DY1QwVbh3LKPb3un9dQA2bC51vd2/gRWAgSBpF3kkmZOj4FhD7ATLX4H+DA==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/pbkdf2": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.0.8.tgz",
+
      "integrity": "sha512-UlmAMGbIPaS2xXsI38FbePVTfJMuU9jnwcqVn3p88HxPF4kD897ha+l3TNsBqJqf32UbQL5GImnf1oJkSKq4vQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/sha2": "^5.0.7"
+
      }
+
    },
+
    "node_modules/@ethersproject/properties": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.8.tgz",
+
      "integrity": "sha512-zEnLMze2Eu2VDPj/05QwCwMKHh506gpT9PP9KPVd4dDB+5d6AcROUYVLoIIQgBYK7X/Gw0UJmG3oVtnxOQafAw==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/providers": {
+
      "version": "5.0.23",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.0.23.tgz",
+
      "integrity": "sha512-eJ94z2tgPaUgUmxwd3BVkIzkgkbNIkY6wRPVas04LVaBTycObQbgj794aaUu2bfk7+Bn2B/gjUZtJW1ybxh9/A==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/basex": "^5.0.7",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/networks": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/random": "^5.0.7",
+
        "@ethersproject/rlp": "^5.0.7",
+
        "@ethersproject/sha2": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/web": "^5.0.12",
+
        "bech32": "1.1.4",
+
        "ws": "7.2.3"
+
      }
+
    },
+
    "node_modules/@ethersproject/random": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.0.8.tgz",
+
      "integrity": "sha512-4rHtotmd9NjklW0eDvByicEkL+qareIyFSbG1ShC8tPJJSAC0g55oQWzw+3nfdRCgBHRuEE7S8EcPcTVPvZ9cA==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/rlp": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.8.tgz",
+
      "integrity": "sha512-E4wdFs8xRNJfzNHmnkC8w5fPeT4Wd1U2cust3YeT16/46iSkLT8nn8ilidC6KhR7hfuSZE4UqSPzyk76p7cdZg==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/sha2": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.0.8.tgz",
+
      "integrity": "sha512-ILP1ZgyvDj4rrdE+AXrTv9V88m7x87uga2VZ/FeULKPumOEw/4bGnJz/oQ8zDnDvVYRCJ+48VaQBS2CFLbk1ww==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "hash.js": "1.1.3"
+
      }
+
    },
+
    "node_modules/@ethersproject/signing-key": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.10.tgz",
+
      "integrity": "sha512-w5it3GbFOvN6e0mTd5gDNj+bwSe6L9jqqYjU+uaYS8/hAEp4qYLk5p8ZjbJJkNn7u1p0iwocp8X9oH/OdK8apA==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "elliptic": "6.5.4"
+
      }
+
    },
+
    "node_modules/@ethersproject/solidity": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.0.9.tgz",
+
      "integrity": "sha512-LIxSAYEQgLRXE3mRPCq39ou61kqP8fDrGqEeNcaNJS3aLbmAOS8MZp56uK++WsdI9hj8sNsFh78hrAa6zR9Jag==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/sha2": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/strings": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.9.tgz",
+
      "integrity": "sha512-ogxBpcUpdO524CYs841MoJHgHxEPUy0bJFDS4Ezg8My+WYVMfVAOlZSLss0Rurbeeam8CpUVDzM4zUn09SU66Q==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/transactions": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.10.tgz",
+
      "integrity": "sha512-Tqpp+vKYQyQdJQQk4M73tDzO7ODf2D42/sJOcKlDAAbdSni13v6a+31hUdo02qYXhVYwIs+ZjHnO4zKv5BNk8w==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/rlp": "^5.0.7",
+
        "@ethersproject/signing-key": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/units": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.0.10.tgz",
+
      "integrity": "sha512-eaiHi9ham5lbC7qpqxpae7OY/nHJUnRUnFFuEwi2VB5Nwe3Np468OAV+e+HR+jAK4fHXQE6PFBTxWGtnZuO37g==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/wallet": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.0.11.tgz",
+
      "integrity": "sha512-2Fg/DOvUltR7aZTOyWWlQhru+SKvq2UE3uEhXSyCFgMqDQNuc2nHXh1SHJtN65jsEbjVIppOe1Q7EQMvhmeeRw==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/hdnode": "^5.0.8",
+
        "@ethersproject/json-wallets": "^5.0.10",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/random": "^5.0.7",
+
        "@ethersproject/signing-key": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/wordlists": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/web": {
+
      "version": "5.0.13",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.13.tgz",
+
      "integrity": "sha512-G3x/Ns7pQm21ALnWLbdBI5XkW/jrsbXXffI9hKNPHqf59mTxHYtlNiSwxdoTSwCef3Hn7uvGZpaSgTyxs7IufQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/base64": "^5.0.7",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@ethersproject/wordlists": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.0.9.tgz",
+
      "integrity": "sha512-Sn6MTjZkfbriod6GG6+p43W09HOXT4gwcDVNj0YoPYlo4Zq2Fk6b1CU9KUX3c6aI17PrgYb4qwZm5BMuORyqyQ==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "node_modules/@snowpack/plugin-svelte": {
+
      "version": "3.5.2",
+
      "resolved": "https://registry.npmjs.org/@snowpack/plugin-svelte/-/plugin-svelte-3.5.2.tgz",
+
      "integrity": "sha512-i7OhkIRNt1uJ/y3qpowlU7icjtSgFPIl/GjMmBxhtwoIqHAnowFLh1Ur5G6S36GCFo65ymClnYfEIM/2x1+wPQ==",
+
      "dev": true,
+
      "dependencies": {
+
        "rollup-plugin-svelte": "^7.0.0",
+
        "svelte-hmr": "^0.12.1",
+
        "svelte-preprocess": "^4.6.0"
+
      },
+
      "peerDependencies": {
+
        "svelte": "^3.21.0"
+
      }
+
    },
+
    "node_modules/@types/node": {
+
      "version": "14.14.31",
+
      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz",
+
      "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==",
+
      "dev": true
+
    },
+
    "node_modules/@types/pug": {
+
      "version": "2.0.4",
+
      "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.4.tgz",
+
      "integrity": "sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI=",
+
      "dev": true
+
    },
+
    "node_modules/@types/sass": {
+
      "version": "1.16.0",
+
      "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.16.0.tgz",
+
      "integrity": "sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA==",
+
      "dev": true,
+
      "dependencies": {
+
        "@types/node": "*"
+
      }
+
    },
+
    "node_modules/aes-js": {
+
      "version": "3.0.0",
+
      "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
+
      "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0="
+
    },
+
    "node_modules/bech32": {
+
      "version": "1.1.4",
+
      "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
+
      "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="
+
    },
+
    "node_modules/bn.js": {
+
      "version": "4.11.9",
+
      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+
      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+
    },
+
    "node_modules/brorand": {
+
      "version": "1.1.0",
+
      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+
      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
+
    },
+
    "node_modules/detect-indent": {
+
      "version": "6.0.0",
+
      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz",
+
      "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==",
+
      "dev": true,
+
      "engines": {
+
        "node": ">=8"
+
      }
+
    },
+
    "node_modules/elliptic": {
+
      "version": "6.5.4",
+
      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+
      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+
      "dependencies": {
+
        "bn.js": "^4.11.9",
+
        "brorand": "^1.1.0",
+
        "hash.js": "^1.0.0",
+
        "hmac-drbg": "^1.0.1",
+
        "inherits": "^2.0.4",
+
        "minimalistic-assert": "^1.0.1",
+
        "minimalistic-crypto-utils": "^1.0.1"
+
      }
+
    },
+
    "node_modules/esbuild": {
+
      "version": "0.8.50",
+
      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.50.tgz",
+
      "integrity": "sha512-oidFLXssA7IccYzkqLVZSqNJDwDq8Mh/vqvrW+3fPWM7iUiC5O2bCllhnO8+K9LlyL/2Z6n+WwRJAz9fqSIVRg==",
+
      "dev": true,
+
      "hasInstallScript": true,
+
      "bin": {
+
        "esbuild": "bin/esbuild"
+
      }
+
    },
+
    "node_modules/estree-walker": {
+
      "version": "0.6.1",
+
      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+
      "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+
      "dev": true
+
    },
+
    "node_modules/ethers": {
+
      "version": "5.0.31",
+
      "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.0.31.tgz",
+
      "integrity": "sha512-zpq0YbNFLFn+t+ibS8UkVWFeK5w6rVMSvbSHrHAQslfazovLnQ/mc2gdN5+6P45/k8fPgHrfHrYvJ4XvyK/S1A==",
+
      "funding": [
+
        {
+
          "type": "individual",
+
          "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+
        },
+
        {
+
          "type": "individual",
+
          "url": "https://www.buymeacoffee.com/ricmoo"
+
        }
+
      ],
+
      "dependencies": {
+
        "@ethersproject/abi": "5.0.12",
+
        "@ethersproject/abstract-provider": "5.0.9",
+
        "@ethersproject/abstract-signer": "5.0.13",
+
        "@ethersproject/address": "5.0.10",
+
        "@ethersproject/base64": "5.0.8",
+
        "@ethersproject/basex": "5.0.8",
+
        "@ethersproject/bignumber": "5.0.14",
+
        "@ethersproject/bytes": "5.0.10",
+
        "@ethersproject/constants": "5.0.9",
+
        "@ethersproject/contracts": "5.0.11",
+
        "@ethersproject/hash": "5.0.11",
+
        "@ethersproject/hdnode": "5.0.9",
+
        "@ethersproject/json-wallets": "5.0.11",
+
        "@ethersproject/keccak256": "5.0.8",
+
        "@ethersproject/logger": "5.0.9",
+
        "@ethersproject/networks": "5.0.8",
+
        "@ethersproject/pbkdf2": "5.0.8",
+
        "@ethersproject/properties": "5.0.8",
+
        "@ethersproject/providers": "5.0.23",
+
        "@ethersproject/random": "5.0.8",
+
        "@ethersproject/rlp": "5.0.8",
+
        "@ethersproject/sha2": "5.0.8",
+
        "@ethersproject/signing-key": "5.0.10",
+
        "@ethersproject/solidity": "5.0.9",
+
        "@ethersproject/strings": "5.0.9",
+
        "@ethersproject/transactions": "5.0.10",
+
        "@ethersproject/units": "5.0.10",
+
        "@ethersproject/wallet": "5.0.11",
+
        "@ethersproject/web": "5.0.13",
+
        "@ethersproject/wordlists": "5.0.9"
+
      }
+
    },
+
    "node_modules/fsevents": {
+
      "version": "2.3.2",
+
      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+
      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+
      "dev": true,
+
      "hasInstallScript": true,
+
      "optional": true,
+
      "os": [
+
        "darwin"
+
      ],
+
      "engines": {
+
        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+
      }
+
    },
+
    "node_modules/hash.js": {
+
      "version": "1.1.3",
+
      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
+
      "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+
      "dependencies": {
+
        "inherits": "^2.0.3",
+
        "minimalistic-assert": "^1.0.0"
+
      }
+
    },
+
    "node_modules/hmac-drbg": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+
      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+
      "dependencies": {
+
        "hash.js": "^1.0.3",
+
        "minimalistic-assert": "^1.0.0",
+
        "minimalistic-crypto-utils": "^1.0.1"
+
      }
+
    },
+
    "node_modules/inherits": {
+
      "version": "2.0.4",
+
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+
      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+
    },
+
    "node_modules/is-docker": {
+
      "version": "2.1.1",
+
      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
+
      "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
+
      "dev": true,
+
      "bin": {
+
        "is-docker": "cli.js"
+
      },
+
      "engines": {
+
        "node": ">=8"
+
      },
+
      "funding": {
+
        "url": "https://github.com/sponsors/sindresorhus"
+
      }
+
    },
+
    "node_modules/is-wsl": {
+
      "version": "2.2.0",
+
      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+
      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+
      "dev": true,
+
      "dependencies": {
+
        "is-docker": "^2.0.0"
+
      },
+
      "engines": {
+
        "node": ">=8"
+
      }
+
    },
+
    "node_modules/js-sha3": {
+
      "version": "0.5.7",
+
      "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz",
+
      "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc="
+
    },
+
    "node_modules/min-indent": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+
      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+
      "dev": true,
+
      "engines": {
+
        "node": ">=4"
+
      }
+
    },
+
    "node_modules/minimalistic-assert": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+
      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+
    },
+
    "node_modules/minimalistic-crypto-utils": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+
      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
+
    },
+
    "node_modules/open": {
+
      "version": "7.4.2",
+
      "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+
      "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+
      "dev": true,
+
      "dependencies": {
+
        "is-docker": "^2.0.0",
+
        "is-wsl": "^2.1.1"
+
      },
+
      "engines": {
+
        "node": ">=8"
+
      },
+
      "funding": {
+
        "url": "https://github.com/sponsors/sindresorhus"
+
      }
+
    },
+
    "node_modules/require-relative": {
+
      "version": "0.8.7",
+
      "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
+
      "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
+
      "dev": true
+
    },
+
    "node_modules/rollup": {
+
      "version": "2.39.0",
+
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz",
+
      "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==",
+
      "dev": true,
+
      "bin": {
+
        "rollup": "dist/bin/rollup"
+
      },
+
      "engines": {
+
        "node": ">=10.0.0"
+
      },
+
      "optionalDependencies": {
+
        "fsevents": "~2.3.1"
+
      }
+
    },
+
    "node_modules/rollup-plugin-svelte": {
+
      "version": "7.1.0",
+
      "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz",
+
      "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==",
+
      "dev": true,
+
      "dependencies": {
+
        "require-relative": "^0.8.7",
+
        "rollup-pluginutils": "^2.8.2"
+
      },
+
      "engines": {
+
        "node": ">=10"
+
      },
+
      "peerDependencies": {
+
        "rollup": ">=2.0.0",
+
        "svelte": ">=3.5.0"
+
      }
+
    },
+
    "node_modules/rollup-pluginutils": {
+
      "version": "2.8.2",
+
      "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+
      "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+
      "dev": true,
+
      "dependencies": {
+
        "estree-walker": "^0.6.1"
+
      }
+
    },
+
    "node_modules/scrypt-js": {
+
      "version": "3.0.1",
+
      "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
+
      "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA=="
+
    },
+
    "node_modules/snowpack": {
+
      "version": "3.0.11",
+
      "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.0.11.tgz",
+
      "integrity": "sha512-lBxgkvWTgdg0szE31JUt01wQkA9Lnmm+6lxqeV9rxDfflpx7ASnldVHFvu7Se70QJmPTQB0UJjfKI+xmYGwiiQ==",
+
      "dev": true,
+
      "dependencies": {
+
        "esbuild": "^0.8.7",
+
        "open": "^7.0.4",
+
        "rollup": "^2.34.0"
+
      },
+
      "bin": {
+
        "snowpack": "index.bin.js",
+
        "sp": "index.bin.js"
+
      },
+
      "engines": {
+
        "node": ">=10.19.0"
+
      },
+
      "optionalDependencies": {
+
        "fsevents": "^2.2.0"
+
      }
+
    },
+
    "node_modules/strip-indent": {
+
      "version": "3.0.0",
+
      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+
      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+
      "dev": true,
+
      "dependencies": {
+
        "min-indent": "^1.0.0"
+
      },
+
      "engines": {
+
        "node": ">=8"
+
      }
+
    },
+
    "node_modules/svelte": {
+
      "version": "3.32.3",
+
      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.32.3.tgz",
+
      "integrity": "sha512-5etu/wDwtewhnYO/631KKTjSmFrKohFLWNm1sWErVHXqGZ8eJLqrW0qivDSyYTcN8GbUqsR4LkIhftNFsjNehg==",
+
      "engines": {
+
        "node": ">= 8"
+
      }
+
    },
+
    "node_modules/svelte-hmr": {
+
      "version": "0.12.6",
+
      "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.12.6.tgz",
+
      "integrity": "sha512-q08BjoUSbwXpKo9ij6aym93jBrt7K8eutLwix5Y9cuSFLS5djxumOoUVsSzDkdKssLlg5X//Kg/0MWHHBeQRTg==",
+
      "dev": true,
+
      "peerDependencies": {
+
        "svelte": ">=3.19.0"
+
      }
+
    },
+
    "node_modules/svelte-preprocess": {
+
      "version": "4.6.9",
+
      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.6.9.tgz",
+
      "integrity": "sha512-SROWH0rB0DJ+0Ii264cprmNu/NJyZacs5wFD71ya93Cg/oA2lKHgQm4F6j0EWA4ktFMzeuJJm/eX6fka39hEHA==",
+
      "dev": true,
+
      "hasInstallScript": true,
+
      "dependencies": {
+
        "@types/pug": "^2.0.4",
+
        "@types/sass": "^1.16.0",
+
        "detect-indent": "^6.0.0",
+
        "strip-indent": "^3.0.0"
+
      },
+
      "engines": {
+
        "node": ">= 9.11.2"
+
      },
+
      "peerDependencies": {
+
        "@babel/core": "^7.10.2",
+
        "coffeescript": "^2.5.1",
+
        "less": "^3.11.3",
+
        "postcss": "^7 || ^8",
+
        "postcss-load-config": "^2.1.0 || ^3.0.0",
+
        "pug": "^3.0.0",
+
        "sass": "^1.26.8",
+
        "stylus": "^0.54.7",
+
        "sugarss": "^2.0.0",
+
        "svelte": "^3.23.0",
+
        "typescript": "^3.9.5 || ^4.0.0"
+
      },
+
      "peerDependenciesMeta": {
+
        "@babel/core": {
+
          "optional": true
+
        },
+
        "coffeescript": {
+
          "optional": true
+
        },
+
        "less": {
+
          "optional": true
+
        },
+
        "node-sass": {
+
          "optional": true
+
        },
+
        "postcss": {
+
          "optional": true
+
        },
+
        "postcss-load-config": {
+
          "optional": true
+
        },
+
        "pug": {
+
          "optional": true
+
        },
+
        "sass": {
+
          "optional": true
+
        },
+
        "stylus": {
+
          "optional": true
+
        },
+
        "sugarss": {
+
          "optional": true
+
        },
+
        "typescript": {
+
          "optional": true
+
        }
+
      }
+
    },
+
    "node_modules/ws": {
+
      "version": "7.2.3",
+
      "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz",
+
      "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==",
+
      "engines": {
+
        "node": ">=8.3.0"
+
      },
+
      "peerDependencies": {
+
        "bufferutil": "^4.0.1",
+
        "utf-8-validate": "^5.0.2"
+
      },
+
      "peerDependenciesMeta": {
+
        "bufferutil": {
+
          "optional": true
+
        },
+
        "utf-8-validate": {
+
          "optional": true
+
        }
+
      }
+
    }
+
  },
+
  "dependencies": {
+
    "@ethersproject/abi": {
+
      "version": "5.0.12",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.12.tgz",
+
      "integrity": "sha512-Ujr/3bwyYYjXLDQfebeiiTuvOw9XtUKM8av6YkoBeMXyGQM9GkjrQlwJMNwGTmqjATH/ZNbRgCh98GjOLiIB1Q==",
+
      "requires": {
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/abstract-provider": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.9.tgz",
+
      "integrity": "sha512-X9fMkqpeu9ayC3JyBkeeZhn35P4xQkpGX/l+FrxDtEW9tybf/UWXSMi8bGThpPtfJ6q6U2LDetXSpSwK4TfYQQ==",
+
      "requires": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/networks": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/web": "^5.0.12"
+
      }
+
    },
+
    "@ethersproject/abstract-signer": {
+
      "version": "5.0.13",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.13.tgz",
+
      "integrity": "sha512-VBIZEI5OK0TURoCYyw0t3w+TEO4kdwnI9wvt4kqUwyxSn3YCRpXYVl0Xoe7XBR/e5+nYOi2MyFGJ3tsFwONecQ==",
+
      "requires": {
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7"
+
      }
+
    },
+
    "@ethersproject/address": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.10.tgz",
+
      "integrity": "sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw==",
+
      "requires": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/rlp": "^5.0.7"
+
      }
+
    },
+
    "@ethersproject/base64": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.8.tgz",
+
      "integrity": "sha512-PNbpHOMgZpZ1skvQl119pV2YkCPXmZTxw+T92qX0z7zaMFPypXWTZBzim+hUceb//zx4DFjeGT4aSjZRTOYThg==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9"
+
      }
+
    },
+
    "@ethersproject/basex": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.0.8.tgz",
+
      "integrity": "sha512-PCVKZIShBQUqAXjJSvaCidThPvL0jaaQZcewJc0sf8Xx05BizaOS8r3jdPdpNdY+/qZtRDqwHTSKjvR/xssyLQ==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/properties": "^5.0.7"
+
      }
+
    },
+
    "@ethersproject/bignumber": {
+
      "version": "5.0.14",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.14.tgz",
+
      "integrity": "sha512-Q4TjMq9Gg3Xzj0aeJWqJgI3tdEiPiET7Y5OtNtjTAODZ2kp4y9jMNg97zVcvPedFvGROdpGDyCI77JDFodUzOw==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "bn.js": "^4.4.0"
+
      }
+
    },
+
    "@ethersproject/bytes": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.10.tgz",
+
      "integrity": "sha512-vpu0v1LZ1j1s9kERQIMnVU69MyHEzUff7nqK9XuCU4vx+AM8n9lU2gj7jtJIvGSt9HzatK/6I6bWusI5nyuaTA==",
+
      "requires": {
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/constants": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.9.tgz",
+
      "integrity": "sha512-2uAKH89UcaJP/Sc+54u92BtJtZ4cPgcS1p0YbB1L3tlkavwNvth+kNCUplIB1Becqs7BOZr0B/3dMNjhJDy4Dg==",
+
      "requires": {
+
        "@ethersproject/bignumber": "^5.0.13"
+
      }
+
    },
+
    "@ethersproject/contracts": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.0.11.tgz",
+
      "integrity": "sha512-FTUUd/6x00dYL2VufE2VowZ7h3mAyBfCQMGwI3tKDIWka+C0CunllFiKrlYCdiHFuVeMotR65dIcnzbLn72MCw==",
+
      "requires": {
+
        "@ethersproject/abi": "^5.0.10",
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7"
+
      }
+
    },
+
    "@ethersproject/hash": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.11.tgz",
+
      "integrity": "sha512-H3KJ9fk33XWJ2djAW03IL7fg3DsDMYjO1XijiUb1hJ85vYfhvxu0OmsU7d3tg2Uv1H1kFSo8ghr3WFQ8c+NL3g==",
+
      "requires": {
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/hdnode": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.0.9.tgz",
+
      "integrity": "sha512-S5UMmIC6XfFtqhUK4uTjD8GPNzSbE+sZ/0VMqFnA3zAJ+cEFZuEyhZDYnl2ItGJzjT4jsy+uEy1SIl3baYK1PQ==",
+
      "requires": {
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/basex": "^5.0.7",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/pbkdf2": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/sha2": "^5.0.7",
+
        "@ethersproject/signing-key": "^5.0.8",
+
        "@ethersproject/strings": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/wordlists": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/json-wallets": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.0.11.tgz",
+
      "integrity": "sha512-0GhWScWUlXXb4qJNp0wmkU95QS3YdN9UMOfMSEl76CRANWWrmyzxcBVSXSBu5iQ0/W8wO+xGlJJ3tpA6v3mbIw==",
+
      "requires": {
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/hdnode": "^5.0.8",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/pbkdf2": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/random": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "aes-js": "3.0.0",
+
        "scrypt-js": "3.0.1"
+
      }
+
    },
+
    "@ethersproject/keccak256": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.8.tgz",
+
      "integrity": "sha512-zoGbwXcWWs9MX4NOAZ7N0hhgIRl4Q/IO/u9c/RHRY4WqDy3Ywm0OLamEV53QDwhjwn3YiiVwU1Ve5j7yJ0a/KQ==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "js-sha3": "0.5.7"
+
      }
+
    },
+
    "@ethersproject/logger": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.9.tgz",
+
      "integrity": "sha512-kV3Uamv3XOH99Xf3kpIG3ZkS7mBNYcLDM00JSDtNgNB4BihuyxpQzIZPRIDmRi+95Z/R1Bb0X2kUNHa/kJoVrw=="
+
    },
+
    "@ethersproject/networks": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.8.tgz",
+
      "integrity": "sha512-PYpptlO2Tu5f/JEBI5hdlMds5k1DY1QwVbh3LKPb3un9dQA2bC51vd2/gRWAgSBpF3kkmZOj4FhD7ATLX4H+DA==",
+
      "requires": {
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/pbkdf2": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.0.8.tgz",
+
      "integrity": "sha512-UlmAMGbIPaS2xXsI38FbePVTfJMuU9jnwcqVn3p88HxPF4kD897ha+l3TNsBqJqf32UbQL5GImnf1oJkSKq4vQ==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/sha2": "^5.0.7"
+
      }
+
    },
+
    "@ethersproject/properties": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.8.tgz",
+
      "integrity": "sha512-zEnLMze2Eu2VDPj/05QwCwMKHh506gpT9PP9KPVd4dDB+5d6AcROUYVLoIIQgBYK7X/Gw0UJmG3oVtnxOQafAw==",
+
      "requires": {
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/providers": {
+
      "version": "5.0.23",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.0.23.tgz",
+
      "integrity": "sha512-eJ94z2tgPaUgUmxwd3BVkIzkgkbNIkY6wRPVas04LVaBTycObQbgj794aaUu2bfk7+Bn2B/gjUZtJW1ybxh9/A==",
+
      "requires": {
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/basex": "^5.0.7",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/networks": "^5.0.7",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/random": "^5.0.7",
+
        "@ethersproject/rlp": "^5.0.7",
+
        "@ethersproject/sha2": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/web": "^5.0.12",
+
        "bech32": "1.1.4",
+
        "ws": "7.2.3"
+
      }
+
    },
+
    "@ethersproject/random": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.0.8.tgz",
+
      "integrity": "sha512-4rHtotmd9NjklW0eDvByicEkL+qareIyFSbG1ShC8tPJJSAC0g55oQWzw+3nfdRCgBHRuEE7S8EcPcTVPvZ9cA==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/rlp": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.8.tgz",
+
      "integrity": "sha512-E4wdFs8xRNJfzNHmnkC8w5fPeT4Wd1U2cust3YeT16/46iSkLT8nn8ilidC6KhR7hfuSZE4UqSPzyk76p7cdZg==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/sha2": {
+
      "version": "5.0.8",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.0.8.tgz",
+
      "integrity": "sha512-ILP1ZgyvDj4rrdE+AXrTv9V88m7x87uga2VZ/FeULKPumOEw/4bGnJz/oQ8zDnDvVYRCJ+48VaQBS2CFLbk1ww==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "hash.js": "1.1.3"
+
      }
+
    },
+
    "@ethersproject/signing-key": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.10.tgz",
+
      "integrity": "sha512-w5it3GbFOvN6e0mTd5gDNj+bwSe6L9jqqYjU+uaYS8/hAEp4qYLk5p8ZjbJJkNn7u1p0iwocp8X9oH/OdK8apA==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "elliptic": "6.5.4"
+
      }
+
    },
+
    "@ethersproject/solidity": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.0.9.tgz",
+
      "integrity": "sha512-LIxSAYEQgLRXE3mRPCq39ou61kqP8fDrGqEeNcaNJS3aLbmAOS8MZp56uK++WsdI9hj8sNsFh78hrAa6zR9Jag==",
+
      "requires": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/sha2": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/strings": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.9.tgz",
+
      "integrity": "sha512-ogxBpcUpdO524CYs841MoJHgHxEPUy0bJFDS4Ezg8My+WYVMfVAOlZSLss0Rurbeeam8CpUVDzM4zUn09SU66Q==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/transactions": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.10.tgz",
+
      "integrity": "sha512-Tqpp+vKYQyQdJQQk4M73tDzO7ODf2D42/sJOcKlDAAbdSni13v6a+31hUdo02qYXhVYwIs+ZjHnO4zKv5BNk8w==",
+
      "requires": {
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/rlp": "^5.0.7",
+
        "@ethersproject/signing-key": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/units": {
+
      "version": "5.0.10",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.0.10.tgz",
+
      "integrity": "sha512-eaiHi9ham5lbC7qpqxpae7OY/nHJUnRUnFFuEwi2VB5Nwe3Np468OAV+e+HR+jAK4fHXQE6PFBTxWGtnZuO37g==",
+
      "requires": {
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/constants": "^5.0.8",
+
        "@ethersproject/logger": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/wallet": {
+
      "version": "5.0.11",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.0.11.tgz",
+
      "integrity": "sha512-2Fg/DOvUltR7aZTOyWWlQhru+SKvq2UE3uEhXSyCFgMqDQNuc2nHXh1SHJtN65jsEbjVIppOe1Q7EQMvhmeeRw==",
+
      "requires": {
+
        "@ethersproject/abstract-provider": "^5.0.8",
+
        "@ethersproject/abstract-signer": "^5.0.10",
+
        "@ethersproject/address": "^5.0.9",
+
        "@ethersproject/bignumber": "^5.0.13",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/hdnode": "^5.0.8",
+
        "@ethersproject/json-wallets": "^5.0.10",
+
        "@ethersproject/keccak256": "^5.0.7",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/random": "^5.0.7",
+
        "@ethersproject/signing-key": "^5.0.8",
+
        "@ethersproject/transactions": "^5.0.9",
+
        "@ethersproject/wordlists": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/web": {
+
      "version": "5.0.13",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.13.tgz",
+
      "integrity": "sha512-G3x/Ns7pQm21ALnWLbdBI5XkW/jrsbXXffI9hKNPHqf59mTxHYtlNiSwxdoTSwCef3Hn7uvGZpaSgTyxs7IufQ==",
+
      "requires": {
+
        "@ethersproject/base64": "^5.0.7",
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "@ethersproject/wordlists": {
+
      "version": "5.0.9",
+
      "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.0.9.tgz",
+
      "integrity": "sha512-Sn6MTjZkfbriod6GG6+p43W09HOXT4gwcDVNj0YoPYlo4Zq2Fk6b1CU9KUX3c6aI17PrgYb4qwZm5BMuORyqyQ==",
+
      "requires": {
+
        "@ethersproject/bytes": "^5.0.9",
+
        "@ethersproject/hash": "^5.0.10",
+
        "@ethersproject/logger": "^5.0.8",
+
        "@ethersproject/properties": "^5.0.7",
+
        "@ethersproject/strings": "^5.0.8"
+
      }
+
    },
+
    "@snowpack/plugin-svelte": {
+
      "version": "3.5.2",
+
      "resolved": "https://registry.npmjs.org/@snowpack/plugin-svelte/-/plugin-svelte-3.5.2.tgz",
+
      "integrity": "sha512-i7OhkIRNt1uJ/y3qpowlU7icjtSgFPIl/GjMmBxhtwoIqHAnowFLh1Ur5G6S36GCFo65ymClnYfEIM/2x1+wPQ==",
+
      "dev": true,
+
      "requires": {
+
        "rollup-plugin-svelte": "^7.0.0",
+
        "svelte-hmr": "^0.12.1",
+
        "svelte-preprocess": "^4.6.0"
+
      }
+
    },
+
    "@types/node": {
+
      "version": "14.14.31",
+
      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz",
+
      "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==",
+
      "dev": true
+
    },
+
    "@types/pug": {
+
      "version": "2.0.4",
+
      "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.4.tgz",
+
      "integrity": "sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI=",
+
      "dev": true
+
    },
+
    "@types/sass": {
+
      "version": "1.16.0",
+
      "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.16.0.tgz",
+
      "integrity": "sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA==",
+
      "dev": true,
+
      "requires": {
+
        "@types/node": "*"
+
      }
+
    },
+
    "aes-js": {
+
      "version": "3.0.0",
+
      "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
+
      "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0="
+
    },
+
    "bech32": {
+
      "version": "1.1.4",
+
      "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
+
      "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="
+
    },
+
    "bn.js": {
+
      "version": "4.11.9",
+
      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+
      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
+
    },
+
    "brorand": {
+
      "version": "1.1.0",
+
      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+
      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
+
    },
+
    "detect-indent": {
+
      "version": "6.0.0",
+
      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz",
+
      "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==",
+
      "dev": true
+
    },
+
    "elliptic": {
+
      "version": "6.5.4",
+
      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+
      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+
      "requires": {
+
        "bn.js": "^4.11.9",
+
        "brorand": "^1.1.0",
+
        "hash.js": "^1.0.0",
+
        "hmac-drbg": "^1.0.1",
+
        "inherits": "^2.0.4",
+
        "minimalistic-assert": "^1.0.1",
+
        "minimalistic-crypto-utils": "^1.0.1"
+
      }
+
    },
+
    "esbuild": {
+
      "version": "0.8.50",
+
      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.50.tgz",
+
      "integrity": "sha512-oidFLXssA7IccYzkqLVZSqNJDwDq8Mh/vqvrW+3fPWM7iUiC5O2bCllhnO8+K9LlyL/2Z6n+WwRJAz9fqSIVRg==",
+
      "dev": true
+
    },
+
    "estree-walker": {
+
      "version": "0.6.1",
+
      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+
      "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+
      "dev": true
+
    },
+
    "ethers": {
+
      "version": "5.0.31",
+
      "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.0.31.tgz",
+
      "integrity": "sha512-zpq0YbNFLFn+t+ibS8UkVWFeK5w6rVMSvbSHrHAQslfazovLnQ/mc2gdN5+6P45/k8fPgHrfHrYvJ4XvyK/S1A==",
+
      "requires": {
+
        "@ethersproject/abi": "5.0.12",
+
        "@ethersproject/abstract-provider": "5.0.9",
+
        "@ethersproject/abstract-signer": "5.0.13",
+
        "@ethersproject/address": "5.0.10",
+
        "@ethersproject/base64": "5.0.8",
+
        "@ethersproject/basex": "5.0.8",
+
        "@ethersproject/bignumber": "5.0.14",
+
        "@ethersproject/bytes": "5.0.10",
+
        "@ethersproject/constants": "5.0.9",
+
        "@ethersproject/contracts": "5.0.11",
+
        "@ethersproject/hash": "5.0.11",
+
        "@ethersproject/hdnode": "5.0.9",
+
        "@ethersproject/json-wallets": "5.0.11",
+
        "@ethersproject/keccak256": "5.0.8",
+
        "@ethersproject/logger": "5.0.9",
+
        "@ethersproject/networks": "5.0.8",
+
        "@ethersproject/pbkdf2": "5.0.8",
+
        "@ethersproject/properties": "5.0.8",
+
        "@ethersproject/providers": "5.0.23",
+
        "@ethersproject/random": "5.0.8",
+
        "@ethersproject/rlp": "5.0.8",
+
        "@ethersproject/sha2": "5.0.8",
+
        "@ethersproject/signing-key": "5.0.10",
+
        "@ethersproject/solidity": "5.0.9",
+
        "@ethersproject/strings": "5.0.9",
+
        "@ethersproject/transactions": "5.0.10",
+
        "@ethersproject/units": "5.0.10",
+
        "@ethersproject/wallet": "5.0.11",
+
        "@ethersproject/web": "5.0.13",
+
        "@ethersproject/wordlists": "5.0.9"
+
      }
+
    },
+
    "fsevents": {
+
      "version": "2.3.2",
+
      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+
      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+
      "dev": true,
+
      "optional": true
+
    },
+
    "hash.js": {
+
      "version": "1.1.3",
+
      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
+
      "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+
      "requires": {
+
        "inherits": "^2.0.3",
+
        "minimalistic-assert": "^1.0.0"
+
      }
+
    },
+
    "hmac-drbg": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+
      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+
      "requires": {
+
        "hash.js": "^1.0.3",
+
        "minimalistic-assert": "^1.0.0",
+
        "minimalistic-crypto-utils": "^1.0.1"
+
      }
+
    },
+
    "inherits": {
+
      "version": "2.0.4",
+
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+
      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+
    },
+
    "is-docker": {
+
      "version": "2.1.1",
+
      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
+
      "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
+
      "dev": true
+
    },
+
    "is-wsl": {
+
      "version": "2.2.0",
+
      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+
      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+
      "dev": true,
+
      "requires": {
+
        "is-docker": "^2.0.0"
+
      }
+
    },
+
    "js-sha3": {
+
      "version": "0.5.7",
+
      "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz",
+
      "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc="
+
    },
+
    "min-indent": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+
      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+
      "dev": true
+
    },
+
    "minimalistic-assert": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+
      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+
    },
+
    "minimalistic-crypto-utils": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+
      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
+
    },
+
    "open": {
+
      "version": "7.4.2",
+
      "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+
      "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+
      "dev": true,
+
      "requires": {
+
        "is-docker": "^2.0.0",
+
        "is-wsl": "^2.1.1"
+
      }
+
    },
+
    "require-relative": {
+
      "version": "0.8.7",
+
      "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
+
      "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
+
      "dev": true
+
    },
+
    "rollup": {
+
      "version": "2.39.0",
+
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz",
+
      "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==",
+
      "dev": true,
+
      "requires": {
+
        "fsevents": "~2.3.1"
+
      }
+
    },
+
    "rollup-plugin-svelte": {
+
      "version": "7.1.0",
+
      "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz",
+
      "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==",
+
      "dev": true,
+
      "requires": {
+
        "require-relative": "^0.8.7",
+
        "rollup-pluginutils": "^2.8.2"
+
      }
+
    },
+
    "rollup-pluginutils": {
+
      "version": "2.8.2",
+
      "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+
      "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+
      "dev": true,
+
      "requires": {
+
        "estree-walker": "^0.6.1"
+
      }
+
    },
+
    "scrypt-js": {
+
      "version": "3.0.1",
+
      "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
+
      "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA=="
+
    },
+
    "snowpack": {
+
      "version": "3.0.11",
+
      "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.0.11.tgz",
+
      "integrity": "sha512-lBxgkvWTgdg0szE31JUt01wQkA9Lnmm+6lxqeV9rxDfflpx7ASnldVHFvu7Se70QJmPTQB0UJjfKI+xmYGwiiQ==",
+
      "dev": true,
+
      "requires": {
+
        "esbuild": "^0.8.7",
+
        "fsevents": "^2.2.0",
+
        "open": "^7.0.4",
+
        "rollup": "^2.34.0"
+
      }
+
    },
+
    "strip-indent": {
+
      "version": "3.0.0",
+
      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+
      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+
      "dev": true,
+
      "requires": {
+
        "min-indent": "^1.0.0"
+
      }
+
    },
+
    "svelte": {
+
      "version": "3.32.3",
+
      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.32.3.tgz",
+
      "integrity": "sha512-5etu/wDwtewhnYO/631KKTjSmFrKohFLWNm1sWErVHXqGZ8eJLqrW0qivDSyYTcN8GbUqsR4LkIhftNFsjNehg=="
+
    },
+
    "svelte-hmr": {
+
      "version": "0.12.6",
+
      "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.12.6.tgz",
+
      "integrity": "sha512-q08BjoUSbwXpKo9ij6aym93jBrt7K8eutLwix5Y9cuSFLS5djxumOoUVsSzDkdKssLlg5X//Kg/0MWHHBeQRTg==",
+
      "dev": true,
+
      "requires": {}
+
    },
+
    "svelte-preprocess": {
+
      "version": "4.6.9",
+
      "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.6.9.tgz",
+
      "integrity": "sha512-SROWH0rB0DJ+0Ii264cprmNu/NJyZacs5wFD71ya93Cg/oA2lKHgQm4F6j0EWA4ktFMzeuJJm/eX6fka39hEHA==",
+
      "dev": true,
+
      "requires": {
+
        "@types/pug": "^2.0.4",
+
        "@types/sass": "^1.16.0",
+
        "detect-indent": "^6.0.0",
+
        "strip-indent": "^3.0.0"
+
      }
+
    },
+
    "ws": {
+
      "version": "7.2.3",
+
      "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz",
+
      "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==",
+
      "requires": {}
+
    }
+
  }
+
}
added package.json
@@ -0,0 +1,15 @@
+
{
+
  "scripts": {
+
    "start": "snowpack dev",
+
    "build": "snowpack build",
+
    "test": "echo \"This template does not include a test runner by default.\" && exit 1"
+
  },
+
  "devDependencies": {
+
    "@snowpack/plugin-svelte": "^3.5.2",
+
    "snowpack": "^3.0.1"
+
  },
+
  "dependencies": {
+
    "ethers": "^5.0.31",
+
    "svelte": "^3.32.3"
+
  }
+
}
added public/favicon.ico
added public/fonts/Inter-Bold.otf
added public/fonts/Inter-Regular.otf
added public/fonts/Inter-SemiBold.otf
added public/fonts/SourceCodePro-Bold.otf
added public/fonts/SourceCodePro-Semibold.otf
added public/index.css
@@ -0,0 +1,168 @@
+
@import url(/typography.css);
+

+
* {
+
	outline: none !important;
+
	box-sizing: border-box;
+
}
+

+
:root {
+
	--color-primary: #ff55ff;
+
	--color-primary-1: #382847;
+
	--color-primary-2: #62326d;
+
	--color-primary-5: #dd44dd;
+
	--color-primary-6: #ffd4ff;
+
	--color-primary-faded: #ff55ff77;
+
	--color-secondary: #5555ff;
+
	--color-secondary-1: #212847;
+
	--color-secondary-2: #2c326d;
+
	--color-secondary-6: #e3e3ff;
+
	--color-tertiary: #55ffff;
+
	--color-tertiary-1: #214047;
+
	--color-tertiary-2: #2c326d;
+
	--color-tertiary-6: #e3e3ff;
+
	--color-positive: #53db53;
+
	--color-positive-1: #21402f;
+
	--color-positive-2: #2c6837;
+
	--color-positive-6: #e3ffe3;
+
	--color-caution: #ffc555;
+
	--color-caution-1: #2f312d;
+
	--color-caution-2: #524a34;
+
	--color-caution-6: #ffefcf;
+
	--color-negative: #ff5555;
+
	--color-negative-1: #38282f;
+
	--color-negative-2: #623237;
+
	--color-negative-6: #ffd4d4;
+
	--color-foreground: #ffffff;
+
	--color-foreground-1: #242e38;
+
	--color-foreground-2: #29343d;
+
	--color-foreground-3: #333e47;
+
	--color-foreground-4: #5e6d7a;
+
	--color-foreground-5: #8594a1;
+
	--color-foreground-6: #d3dee8;
+
	--color-background: #0e171f;
+

+
	--font-family-sans-serif: Inter;
+
	--font-family-monospace: monospace;
+
	--border-radius: 50px;
+
}
+

+

+
body {
+
	font-size: 16px;
+
	font-weight: 400;
+
	line-height: 1.5;
+
	color: white;
+
	text-align: left;
+
	background-color: #0e171f;
+
}
+

+
html {
+
	font-family: sans-serif;
+
	line-height: 1.15;
+
	height: 100%;
+
	-webkit-text-size-adjust: 100%;
+
	-ms-text-size-adjust: 100%;
+
	-ms-overflow-style: scrollbar;
+
	-webkit-tap-highlight-color: transparent;
+
}
+

+
code {
+
	font-family: monospace;
+
	font-size: 0.95rem;
+
}
+

+
main, section {
+
	display: block;
+
}
+

+
body, input, textarea, button {
+
	font-family: "Inter";
+
	font-feature-settings: "ss01", "ss02", "cv01", "cv03";
+
}
+

+
button {
+
	color: white;
+
	background: transparent;
+
	font-size: 1rem;
+
	padding: 1rem 1.5rem;
+
	border: 1px solid var(--color-foreground);
+
	border-radius: var(--border-radius);
+
	cursor: pointer;
+
	min-width: 8rem;
+
}
+
button:hover {
+
	color: var(--color-background);
+
	background-color: var(--color-foreground);
+
}
+
button.waiting {
+
	cursor: wait;
+
}
+
button.secondary {
+
	color: var(--color-secondary);
+
	border-color: var(--color-secondary);
+
}
+
button.primary {
+
	color: var(--color-primary);
+
	border-color: var(--color-primary);
+
}
+
button.primary:hover {
+
	color: var(--color-background);
+
	background-color: var(--color-primary);
+
}
+
button.primary[disabled] {
+
	color: var(--color-primary-faded) !important;
+
	border-color: var(--color-primary-faded) !important;
+
	background-color: transparent;
+
}
+
button[disabled] {
+
	cursor: not-allowed !important;
+
}
+
button[data-waiting] {
+
	cursor: wait !important;
+
}
+

+
button.text {
+
	color: var(--color-foreground-6);
+
	background-color: transparent;
+
	border: none;
+
	min-width: 3rem;
+
}
+
button.text:hover {
+
	color: var(--color-background);
+
	background-color: var(--color-foreground);
+
}
+

+
button.small {
+
	padding-top: 0.5rem;
+
	padding-bottom: 0.5rem;
+
	min-width: 6rem;
+
}
+

+
a {
+
	color: var(--color-secondary);
+
	text-decoration: none;
+
}
+
a:hover {
+
	text-decoration: none;
+
}
+

+
input[type="text"], button {
+
	line-height: 1.5em;
+
}
+
input[type="text"] {
+
	outline: none;
+
	border: none;
+
	font-size: 1rem;
+
	color: var(--color-foreground);
+
	background: transparent;
+
	border: 1px solid var(--color-secondary);
+
	border-radius: var(--border-radius);
+
	padding: 1rem 1.5rem;
+
	margin: 1rem;
+
}
+
input[type="text"]::placeholder {
+
	color: var(--color-secondary);
+
}
+
input.wide {
+
	width: 44ch;
+
}
added public/index.html
@@ -0,0 +1,13 @@
+
<!DOCTYPE html>
+
<html lang="en">
+
  <head>
+
    <meta charset="utf-8" />
+
    <meta name="viewport" content="width=device-width, initial-scale=1" />
+
    <meta name="description" content="Interact with your vesting contract" />
+
    <link rel="stylesheet" type="text/css" href="/index.css" />
+
    <title>Radicle: Vesting</title>
+
  </head>
+
  <body>
+
    <script type="module" src="/dist/index.js"></script>
+
  </body>
+
</html>
added public/radicle.svg
@@ -0,0 +1,35 @@
+
<svg width="181" height="33" viewBox="0 0 181 33" fill="none" xmlns="http://www.w3.org/2000/svg">
+
<path d="M15.9816 26.8228C15.6419 23.0941 16.1806 18.0689 18.3597 15.6342C20.6547 16.1475 25.2446 14.5636 26.9137 11.3513C28.4272 8.43853 28.1528 4.16388 29 3C19.0202 2.99992 17.3645 13.4047 14.5067 21.1967C12.3937 15.4354 5.76235 11.5531 0 13.9212C2.3427 15.5546 3.80345 19.5822 6.97767 19.9427C7.97633 20.0561 9.79 19.9427 10.9846 17.6656C13.8113 19.9815 13.3993 22.79 13.0318 26.8228C12.8835 28.4504 12.3252 29.9984 12.4072 31.2897C12.5249 33.5701 16.4885 33.5701 16.6062 31.2897C16.6882 29.9984 16.1299 28.4504 15.9816 26.8228Z" fill="url(#paint0_linear)"/>
+
<mask id="path-2-inside-1" fill="white">
+
<path d="M89.0433 13.512C89.0433 9.07445 89.0433 4.71519 89.0433 0.320709C90.9316 0.320709 92.7503 0.320709 94.6153 0.320709C94.6153 10.3776 94.6153 20.4082 94.6153 30.482C92.7774 30.482 90.9575 30.482 89.0433 30.482C89.0433 29.9407 89.0433 29.3929 89.0433 28.7785C88.8869 28.8554 88.8236 28.8698 88.7824 28.9089C86.6925 30.872 84.2022 31.3652 81.5194 30.7064C77.9817 29.8389 75.853 27.4154 74.9786 23.9339C74.0912 20.4017 74.6879 17.1095 77.0814 14.2724C79.5988 11.288 84.0394 10.4427 87.3577 12.3145C87.9117 12.6263 88.4053 13.0528 89.0433 13.512ZM89.2279 21.4021C89.2319 20.4383 89.113 19.7064 88.8236 19.023C88.1443 17.4174 86.9508 16.4365 85.2174 16.2472C83.5822 16.0686 82.1898 16.6177 81.203 17.973C80.0405 19.5695 79.9048 21.3422 80.5675 23.1697C81.482 25.691 84.3739 26.822 86.7364 25.5866C88.493 24.6697 89.1389 23.0809 89.2279 21.4021Z"/>
+
<path d="M65.2552 13.4917C65.2552 12.9177 65.2552 12.3895 65.2552 11.8142C67.1488 11.8142 68.9661 11.8142 70.7847 11.8142C70.9281 12.2681 70.9952 28.9447 70.8506 30.4943C69.0255 30.5674 67.1901 30.5048 65.285 30.5296C65.285 29.9309 65.285 29.3961 65.285 28.7334C65.055 28.9147 64.9245 29.0061 64.807 29.1117C63.5529 30.2387 62.0687 30.8074 60.4116 30.9313C55.8857 31.2666 52.5791 28.2861 51.4605 24.7786C50.2438 20.9607 50.7204 17.3813 53.3425 14.2534C55.8352 11.2821 60.263 10.4512 63.5632 12.2968C64.1366 12.6164 64.6429 13.0547 65.2552 13.4917ZM56.3442 21.1694C56.3442 21.7057 56.5767 22.5415 56.8196 23.1793C57.4628 24.8607 58.7015 25.8625 60.4891 26.0425C62.234 26.2186 63.6497 25.5651 64.6417 24.0755C65.8584 22.2481 65.7163 19.4945 64.3317 17.7922C62.6422 15.713 59.364 15.6804 57.6294 17.7231C56.7923 18.7093 56.3442 19.8656 56.3442 21.1694Z"/>
+
<path d="M151.718 25.9797C153.988 25.9797 156.134 25.9797 158.322 25.9797C158.322 27.4966 158.322 28.9641 158.322 30.4784C152.061 30.4784 145.809 30.4784 139.558 30.4784C139.411 30.0167 139.382 26.7374 139.534 25.9692C141.681 25.9692 143.843 25.9692 146.046 25.9692C146.046 18.9099 146.046 11.9236 146.046 4.86289C143.867 4.86289 141.705 4.86289 139.565 4.86289C139.418 4.32548 139.381 1.27843 139.491 0.395364C139.944 0.258403 150.946 0.229707 151.718 0.378408C151.718 8.86995 151.718 17.3785 151.718 25.9797Z"/>
+
<path d="M164.337 22.596C164.455 23.9656 165.047 24.9766 166.069 25.6769C167.681 26.7818 169.425 26.7844 171.182 26.0617C171.862 25.7826 172.323 25.2282 172.65 24.5591C174.297 24.5591 175.925 24.5591 177.665 24.5591C177.473 25.1082 177.351 25.6156 177.129 26.0735C176.129 28.1462 174.52 29.5784 172.388 30.3493C169.862 31.2636 167.299 31.2063 164.806 30.2293C162.03 29.1414 160.287 27.0596 159.502 24.1677C158.912 21.9933 158.94 19.8294 159.701 17.6942C161.035 13.9479 164.54 11.4122 168.481 11.3365C170.852 11.2909 172.991 11.9235 174.791 13.5371C176.363 14.947 177.25 16.7524 177.701 18.7963C177.969 20.0106 178.066 21.2394 177.953 22.5712C177.051 22.6195 176.157 22.5882 175.263 22.5947C174.36 22.5999 173.455 22.596 172.551 22.596C171.648 22.596 170.742 22.596 169.839 22.596C168.935 22.596 168.031 22.596 167.126 22.596C166.227 22.596 165.325 22.596 164.337 22.596ZM172.538 19.0468C172.538 18.9373 172.556 18.8498 172.536 18.7728C172.273 17.7594 171.732 16.9376 170.793 16.4614C169.295 15.7023 167.791 15.7623 166.362 16.635C165.474 17.1763 164.876 17.9836 164.547 19.0481C167.239 19.0468 169.875 19.0468 172.538 19.0468Z"/>
+
<path d="M138.292 18.8446C136.399 18.8446 134.554 18.8446 132.695 18.8446C132.645 18.7677 132.584 18.7011 132.556 18.6242C131.835 16.6741 129.531 15.6372 127.268 16.6455C126.008 17.2063 125.224 18.2147 124.873 19.5477C124.393 21.3766 124.606 23.0944 125.843 24.5774C127.386 26.4271 130.29 26.5328 131.848 24.8005C132.188 24.4222 132.417 23.9435 132.737 23.4543C134.532 23.4543 136.394 23.4543 138.328 23.4543C138.304 23.6644 138.301 23.8523 138.258 24.0322C137.621 26.6958 136.007 28.5898 133.648 29.8459C129.658 31.972 124.552 31.0186 121.543 27.6245C117.442 22.9992 118.64 15.7077 124.001 12.6606C128.058 10.3544 133.086 11.0732 136.217 14.4098C137.248 15.5081 137.918 16.802 138.263 18.2708C138.288 18.3764 138.309 18.4834 138.319 18.5916C138.326 18.6517 138.308 18.7156 138.292 18.8446Z"/>
+
<path d="M105.694 16.3086C103.517 16.3086 101.372 16.3086 99.1803 16.3086C99.1803 14.7928 99.1803 13.3268 99.1803 11.8123C103.228 11.8123 107.264 11.8123 111.386 11.8123C111.395 12.0523 111.415 12.304 111.415 12.5545C111.416 16.7494 111.416 20.9442 111.416 25.1392C111.416 25.3922 111.416 25.6453 111.416 25.9466C113.649 25.9466 115.794 25.9466 117.923 25.9466C118.087 26.4345 118.126 29.6199 117.988 30.482C111.744 30.482 105.492 30.482 99.2452 30.482C99.1117 30.0006 99.0707 27.0357 99.1893 25.9909C99.8958 25.9362 100.621 25.9727 101.342 25.9662C102.053 25.9597 102.763 25.965 103.474 25.965C104.203 25.965 104.935 25.965 105.653 25.965C105.812 25.4901 105.852 17.189 105.694 16.3086Z"/>
+
<path d="M48.0231 11.8101C48.0231 13.3219 48.0231 14.7724 48.0231 16.3156C46.9794 16.3338 45.9551 16.322 44.9322 16.3233C43.8782 16.3259 42.8242 16.3233 41.7702 16.3233C40.7421 16.3233 39.7139 16.3233 38.6135 16.3233C38.6135 21.0609 38.6135 25.741 38.6135 30.4003C38.0839 30.5515 33.7517 30.5789 33 30.4499C33 24.2566 33 18.0556 33 11.8101C38.0012 11.8101 42.9779 11.8101 48.0231 11.8101Z"/>
+
<path d="M108.052 7.36599C105.971 7.36994 104.347 5.74987 104.351 3.67589C104.355 1.63974 105.968 0.0170895 108.006 0.000132536C110.085 -0.0168245 111.725 1.5954 111.734 3.66284C111.744 5.74726 110.138 7.3621 108.052 7.36599Z"/>
+
</mask>
+
<path d="M89.0433 13.512C89.0433 9.07445 89.0433 4.71519 89.0433 0.320709C90.9316 0.320709 92.7503 0.320709 94.6153 0.320709C94.6153 10.3776 94.6153 20.4082 94.6153 30.482C92.7774 30.482 90.9575 30.482 89.0433 30.482C89.0433 29.9407 89.0433 29.3929 89.0433 28.7785C88.8869 28.8554 88.8236 28.8698 88.7824 28.9089C86.6925 30.872 84.2022 31.3652 81.5194 30.7064C77.9817 29.8389 75.853 27.4154 74.9786 23.9339C74.0912 20.4017 74.6879 17.1095 77.0814 14.2724C79.5988 11.288 84.0394 10.4427 87.3577 12.3145C87.9117 12.6263 88.4053 13.0528 89.0433 13.512ZM89.2279 21.4021C89.2319 20.4383 89.113 19.7064 88.8236 19.023C88.1443 17.4174 86.9508 16.4365 85.2174 16.2472C83.5822 16.0686 82.1898 16.6177 81.203 17.973C80.0405 19.5695 79.9048 21.3422 80.5675 23.1697C81.482 25.691 84.3739 26.822 86.7364 25.5866C88.493 24.6697 89.1389 23.0809 89.2279 21.4021Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M65.2552 13.4917C65.2552 12.9177 65.2552 12.3895 65.2552 11.8142C67.1488 11.8142 68.9661 11.8142 70.7847 11.8142C70.9281 12.2681 70.9952 28.9447 70.8506 30.4943C69.0255 30.5674 67.1901 30.5048 65.285 30.5296C65.285 29.9309 65.285 29.3961 65.285 28.7334C65.055 28.9147 64.9245 29.0061 64.807 29.1117C63.5529 30.2387 62.0687 30.8074 60.4116 30.9313C55.8857 31.2666 52.5791 28.2861 51.4605 24.7786C50.2438 20.9607 50.7204 17.3813 53.3425 14.2534C55.8352 11.2821 60.263 10.4512 63.5632 12.2968C64.1366 12.6164 64.6429 13.0547 65.2552 13.4917ZM56.3442 21.1694C56.3442 21.7057 56.5767 22.5415 56.8196 23.1793C57.4628 24.8607 58.7015 25.8625 60.4891 26.0425C62.234 26.2186 63.6497 25.5651 64.6417 24.0755C65.8584 22.2481 65.7163 19.4945 64.3317 17.7922C62.6422 15.713 59.364 15.6804 57.6294 17.7231C56.7923 18.7093 56.3442 19.8656 56.3442 21.1694Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M151.718 25.9797C153.988 25.9797 156.134 25.9797 158.322 25.9797C158.322 27.4966 158.322 28.9641 158.322 30.4784C152.061 30.4784 145.809 30.4784 139.558 30.4784C139.411 30.0167 139.382 26.7374 139.534 25.9692C141.681 25.9692 143.843 25.9692 146.046 25.9692C146.046 18.9099 146.046 11.9236 146.046 4.86289C143.867 4.86289 141.705 4.86289 139.565 4.86289C139.418 4.32548 139.381 1.27843 139.491 0.395364C139.944 0.258403 150.946 0.229707 151.718 0.378408C151.718 8.86995 151.718 17.3785 151.718 25.9797Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M164.337 22.596C164.455 23.9656 165.047 24.9766 166.069 25.6769C167.681 26.7818 169.425 26.7844 171.182 26.0617C171.862 25.7826 172.323 25.2282 172.65 24.5591C174.297 24.5591 175.925 24.5591 177.665 24.5591C177.473 25.1082 177.351 25.6156 177.129 26.0735C176.129 28.1462 174.52 29.5784 172.388 30.3493C169.862 31.2636 167.299 31.2063 164.806 30.2293C162.03 29.1414 160.287 27.0596 159.502 24.1677C158.912 21.9933 158.94 19.8294 159.701 17.6942C161.035 13.9479 164.54 11.4122 168.481 11.3365C170.852 11.2909 172.991 11.9235 174.791 13.5371C176.363 14.947 177.25 16.7524 177.701 18.7963C177.969 20.0106 178.066 21.2394 177.953 22.5712C177.051 22.6195 176.157 22.5882 175.263 22.5947C174.36 22.5999 173.455 22.596 172.551 22.596C171.648 22.596 170.742 22.596 169.839 22.596C168.935 22.596 168.031 22.596 167.126 22.596C166.227 22.596 165.325 22.596 164.337 22.596ZM172.538 19.0468C172.538 18.9373 172.556 18.8498 172.536 18.7728C172.273 17.7594 171.732 16.9376 170.793 16.4614C169.295 15.7023 167.791 15.7623 166.362 16.635C165.474 17.1763 164.876 17.9836 164.547 19.0481C167.239 19.0468 169.875 19.0468 172.538 19.0468Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M138.292 18.8446C136.399 18.8446 134.554 18.8446 132.695 18.8446C132.645 18.7677 132.584 18.7011 132.556 18.6242C131.835 16.6741 129.531 15.6372 127.268 16.6455C126.008 17.2063 125.224 18.2147 124.873 19.5477C124.393 21.3766 124.606 23.0944 125.843 24.5774C127.386 26.4271 130.29 26.5328 131.848 24.8005C132.188 24.4222 132.417 23.9435 132.737 23.4543C134.532 23.4543 136.394 23.4543 138.328 23.4543C138.304 23.6644 138.301 23.8523 138.258 24.0322C137.621 26.6958 136.007 28.5898 133.648 29.8459C129.658 31.972 124.552 31.0186 121.543 27.6245C117.442 22.9992 118.64 15.7077 124.001 12.6606C128.058 10.3544 133.086 11.0732 136.217 14.4098C137.248 15.5081 137.918 16.802 138.263 18.2708C138.288 18.3764 138.309 18.4834 138.319 18.5916C138.326 18.6517 138.308 18.7156 138.292 18.8446Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M105.694 16.3086C103.517 16.3086 101.372 16.3086 99.1803 16.3086C99.1803 14.7928 99.1803 13.3268 99.1803 11.8123C103.228 11.8123 107.264 11.8123 111.386 11.8123C111.395 12.0523 111.415 12.304 111.415 12.5545C111.416 16.7494 111.416 20.9442 111.416 25.1392C111.416 25.3922 111.416 25.6453 111.416 25.9466C113.649 25.9466 115.794 25.9466 117.923 25.9466C118.087 26.4345 118.126 29.6199 117.988 30.482C111.744 30.482 105.492 30.482 99.2452 30.482C99.1117 30.0006 99.0707 27.0357 99.1893 25.9909C99.8958 25.9362 100.621 25.9727 101.342 25.9662C102.053 25.9597 102.763 25.965 103.474 25.965C104.203 25.965 104.935 25.965 105.653 25.965C105.812 25.4901 105.852 17.189 105.694 16.3086Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M48.0231 11.8101C48.0231 13.3219 48.0231 14.7724 48.0231 16.3156C46.9794 16.3338 45.9551 16.322 44.9322 16.3233C43.8782 16.3259 42.8242 16.3233 41.7702 16.3233C40.7421 16.3233 39.7139 16.3233 38.6135 16.3233C38.6135 21.0609 38.6135 25.741 38.6135 30.4003C38.0839 30.5515 33.7517 30.5789 33 30.4499C33 24.2566 33 18.0556 33 11.8101C38.0012 11.8101 42.9779 11.8101 48.0231 11.8101Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M108.052 7.36599C105.971 7.36994 104.347 5.74987 104.351 3.67589C104.355 1.63974 105.968 0.0170895 108.006 0.000132536C110.085 -0.0168245 111.725 1.5954 111.734 3.66284C111.744 5.74726 110.138 7.3621 108.052 7.36599Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
<path d="M92.0433 15.512C92.0433 11.0745 92.0433 6.71519 92.0433 2.32071C93.9316 2.32071 95.7503 2.32071 97.6153 2.32071C97.6153 12.3776 97.6153 22.4082 97.6153 32.482C95.7774 32.482 93.9575 32.482 92.0433 32.482C92.0433 31.9407 92.0433 31.3929 92.0433 30.7785C91.8869 30.8554 91.8236 30.8698 91.7824 30.9089C89.6925 32.872 87.2022 33.3652 84.5194 32.7064C80.9817 31.8389 78.853 29.4154 77.9786 25.9339C77.0912 22.4017 77.6879 19.1095 80.0814 16.2724C82.5988 13.288 87.0394 12.4427 90.3577 14.3145C90.9117 14.6263 91.4053 15.0528 92.0433 15.512ZM92.2279 23.4021C92.2319 22.4383 92.113 21.7064 91.8236 21.023C91.1443 19.4174 89.9508 18.4365 88.2174 18.2472C86.5822 18.0686 85.1898 18.6177 84.203 19.973C83.0405 21.5695 82.9048 23.3422 83.5675 25.1697C84.482 27.691 87.3739 28.822 89.7364 27.5866C91.493 26.6697 92.1389 25.0809 92.2279 23.4021Z" fill="white"/>
+
<path d="M68.2552 15.4917C68.2552 14.9177 68.2552 14.3895 68.2552 13.8142C70.1488 13.8142 71.9661 13.8142 73.7847 13.8142C73.9281 14.2681 73.9952 30.9447 73.8506 32.4943C72.0255 32.5674 70.1901 32.5048 68.285 32.5296C68.285 31.9309 68.285 31.3961 68.285 30.7334C68.055 30.9147 67.9245 31.0061 67.807 31.1117C66.5529 32.2387 65.0687 32.8074 63.4116 32.9313C58.8857 33.2666 55.5791 30.2861 54.4605 26.7786C53.2438 22.9607 53.7204 19.3813 56.3425 16.2534C58.8352 13.2821 63.263 12.4512 66.5632 14.2968C67.1366 14.6164 67.6429 15.0547 68.2552 15.4917ZM59.3442 23.1694C59.3442 23.7057 59.5767 24.5415 59.8196 25.1793C60.4628 26.8607 61.7015 27.8625 63.4891 28.0425C65.234 28.2186 66.6497 27.5651 67.6417 26.0755C68.8584 24.2481 68.7163 21.4945 67.3317 19.7922C65.6422 17.713 62.364 17.6804 60.6294 19.7231C59.7923 20.7093 59.3442 21.8656 59.3442 23.1694Z" fill="white"/>
+
<path d="M154.718 27.9797C156.988 27.9797 159.134 27.9797 161.322 27.9797C161.322 29.4966 161.322 30.9641 161.322 32.4784C155.061 32.4784 148.809 32.4784 142.558 32.4784C142.411 32.0167 142.382 28.7374 142.534 27.9692C144.681 27.9692 146.843 27.9692 149.046 27.9692C149.046 20.9099 149.046 13.9236 149.046 6.86289C146.867 6.86289 144.705 6.86289 142.565 6.86289C142.418 6.32548 142.381 3.27843 142.491 2.39536C142.944 2.2584 153.946 2.22971 154.718 2.37841C154.718 10.87 154.718 19.3785 154.718 27.9797Z" fill="white"/>
+
<path d="M167.337 24.596C167.455 25.9656 168.047 26.9766 169.069 27.6769C170.681 28.7818 172.425 28.7844 174.182 28.0617C174.862 27.7826 175.323 27.2282 175.65 26.5591C177.297 26.5591 178.925 26.5591 180.665 26.5591C180.473 27.1082 180.351 27.6156 180.129 28.0735C179.129 30.1462 177.52 31.5784 175.388 32.3493C172.862 33.2636 170.299 33.2063 167.806 32.2293C165.03 31.1414 163.287 29.0596 162.502 26.1677C161.912 23.9933 161.94 21.8294 162.701 19.6942C164.035 15.9479 167.54 13.4122 171.481 13.3365C173.852 13.2909 175.991 13.9235 177.791 15.5371C179.363 16.947 180.25 18.7524 180.701 20.7963C180.969 22.0106 181.066 23.2394 180.953 24.5712C180.051 24.6195 179.157 24.5882 178.263 24.5947C177.36 24.5999 176.455 24.596 175.551 24.596C174.648 24.596 173.742 24.596 172.839 24.596C171.935 24.596 171.031 24.596 170.126 24.596C169.227 24.596 168.325 24.596 167.337 24.596ZM175.538 21.0468C175.538 20.9373 175.556 20.8498 175.536 20.7728C175.273 19.7594 174.732 18.9376 173.793 18.4614C172.295 17.7023 170.791 17.7623 169.362 18.635C168.474 19.1763 167.876 19.9836 167.547 21.0481C170.239 21.0468 172.875 21.0468 175.538 21.0468Z" fill="white"/>
+
<path d="M141.292 20.8446C139.399 20.8446 137.554 20.8446 135.695 20.8446C135.645 20.7677 135.584 20.7011 135.556 20.6242C134.835 18.6741 132.531 17.6372 130.268 18.6455C129.008 19.2063 128.224 20.2147 127.873 21.5477C127.393 23.3766 127.606 25.0944 128.843 26.5774C130.386 28.4271 133.29 28.5328 134.848 26.8005C135.188 26.4222 135.417 25.9435 135.737 25.4543C137.532 25.4543 139.394 25.4543 141.328 25.4543C141.304 25.6644 141.301 25.8523 141.258 26.0322C140.621 28.6958 139.007 30.5898 136.648 31.8459C132.658 33.972 127.552 33.0186 124.543 29.6245C120.442 24.9992 121.64 17.7077 127.001 14.6606C131.058 12.3544 136.086 13.0732 139.217 16.4098C140.248 17.5081 140.918 18.802 141.263 20.2708C141.288 20.3764 141.309 20.4834 141.319 20.5916C141.326 20.6517 141.308 20.7156 141.292 20.8446Z" fill="white"/>
+
<path d="M108.694 18.3086C106.517 18.3086 104.372 18.3086 102.18 18.3086C102.18 16.7928 102.18 15.3268 102.18 13.8123C106.228 13.8123 110.264 13.8123 114.386 13.8123C114.395 14.0523 114.415 14.304 114.415 14.5545C114.416 18.7494 114.416 22.9442 114.416 27.1392C114.416 27.3922 114.416 27.6453 114.416 27.9466C116.649 27.9466 118.794 27.9466 120.923 27.9466C121.087 28.4345 121.126 31.6199 120.988 32.482C114.744 32.482 108.492 32.482 102.245 32.482C102.112 32.0006 102.071 29.0357 102.189 27.9909C102.896 27.9362 103.621 27.9727 104.342 27.9662C105.053 27.9597 105.763 27.965 106.474 27.965C107.203 27.965 107.935 27.965 108.653 27.965C108.812 27.4901 108.852 19.189 108.694 18.3086Z" fill="white"/>
+
<path d="M51.0231 13.8101C51.0231 15.3219 51.0231 16.7724 51.0231 18.3156C49.9794 18.3338 48.9551 18.322 47.9322 18.3233C46.8782 18.3259 45.8242 18.3233 44.7702 18.3233C43.7421 18.3233 42.7139 18.3233 41.6135 18.3233C41.6135 23.0609 41.6135 27.741 41.6135 32.4003C41.0839 32.5515 36.7517 32.5789 36 32.4499C36 26.2566 36 20.0556 36 13.8101C41.0012 13.8101 45.9779 13.8101 51.0231 13.8101Z" fill="white"/>
+
<path d="M111.052 9.36599C108.971 9.36994 107.347 7.74987 107.351 5.67589C107.355 3.63974 108.968 2.01709 111.006 2.00013C113.085 1.98318 114.725 3.5954 114.734 5.66284C114.744 7.74726 113.138 9.3621 111.052 9.36599Z" fill="white"/>
+
<defs>
+
<linearGradient id="paint0_linear" x1="9.95098" y1="11.5096" x2="22.4573" y2="35.1592" gradientUnits="userSpaceOnUse">
+
<stop stop-color="#FF55FF"/>
+
<stop offset="1" stop-color="#5555FF"/>
+
</linearGradient>
+
</defs>
+
</svg>
added public/typography.css
@@ -0,0 +1,42 @@
+
@font-face {
+
  font-family: "Inter";
+
	font-style: normal;
+
	font-weight: 400;
+
	font-display: swap;
+
  src: url("fonts/Inter-Regular.otf");
+
}
+

+
@font-face {
+
  font-family: "Inter";
+
	font-style: bold;
+
	font-weight: 600;
+
	font-display: swap;
+
  src: url("fonts/Inter-SemiBold.otf");
+
}
+

+
@font-face {
+
  font-family: "Inter";
+
	font-style: bold;
+
	font-weight: 700;
+
	font-display: swap;
+
  src: url("fonts/Inter-Bold.otf");
+
}
+

+
@font-face {
+
  font-family: "Source Code Pro";
+
	font-style: bold;
+
	font-weight: 600;
+
  src: url("fonts/SourceCodePro-Semibold.otf");
+
}
+

+
@font-face {
+
  font-family: "Source Code Pro";
+
	font-style: bold;
+
	font-weight: 700;
+
  src: url("fonts/SourceCodePro-Bold.otf");
+
}
+

+
:root {
+
  --typeface: "Inter";
+
  --typeface-mono: "Source Code Pro";
+
}
added snowpack.config.js
@@ -0,0 +1,28 @@
+
/** @type {import("snowpack").SnowpackUserConfig } */
+
module.exports = {
+
  mount: {
+
    public: '/',
+
    src: '/dist',
+
  },
+
  plugins: [
+
    '@snowpack/plugin-svelte'
+
  ],
+
  routes: [
+
    /* Enable an SPA Fallback in development: */
+
    // {"match": "routes", "src": ".*", "dest": "/index.html"},
+
  ],
+
  optimize: {
+
    /* Example: Bundle your final build: */
+
    // "bundle": true,
+
  },
+
  packageOptions: {
+
    polyfillNode: true,
+
  },
+
  devOptions: {
+
    open: "none",
+
    output: "dashboard"
+
  },
+
  buildOptions: {
+
    /* ... */
+
  },
+
};
added src/App.svelte
@@ -0,0 +1,150 @@
+
<script lang="javascript">
+
  import { ethers } from 'ethers';
+
  import { get } from 'svelte/store';
+
  import { STATE, state, error } from './state.js';
+
  import { getConfig } from './config.js';
+
  import { session } from './session.js';
+
  import { getInfo } from './vesting.js';
+
  import Header from './Header.svelte';
+

+
  let contractAddress = "";
+
  let info = null;
+

+
  function handleKeydown(event) {
+
    if (event.key === 'Enter') {
+
      document.querySelector('button.primary').click();
+
    }
+
  }
+

+
  async function loadContract(config) {
+
    state.set(STATE.LOADING);
+
    info = await getInfo(contractAddress, config);
+
    state.set(STATE.IDLE);
+
  }
+
</script>
+

+
<style>
+
  main {
+
    padding-top: 2rem;
+
    align-self: center;
+
  }
+
  .wrapper {
+
    display: flex;
+
    align-items: center;
+
    flex-direction: column;
+
    justify-content: center;
+
    height: 24rem;
+
  }
+
  .modal {
+
    padding: 2rem;
+
    border: 1px solid var(--color-secondary);
+
    box-shadow: 8px 8px 64px var(--color-secondary-2);
+
    min-width: 480px;
+
    text-align: center;
+
  }
+
  .modal-title {
+
    font-size: 1.75rem;
+
    margin-bottom: 1rem;
+
    color: var(--color-secondary);
+
    text-align: center;
+
  }
+
  .modal-body {
+
    margin: 3rem 0;
+
  }
+
  .modal-actions {
+
    margin-top: 2rem;
+
    text-align: center;
+
  }
+
  div.input-caption {
+
    font-size: 1.25rem;
+
    text-align: left;
+
    margin-left: 1.5rem;
+
    padding-left: 1.5rem;
+
    margin-bottom: 1rem;
+
    color: var(--color-secondary);
+
  }
+
  div.input-main {
+
    display: flex;
+
    align-items: center;
+
    flex-direction: row;
+
    margin-left: 1.5rem;
+
    color: var(--color-secondary);
+
  }
+

+
  table {
+
    table-layout: fixed;
+
    border-collapse: collapse;
+
    width: 100%;
+
    max-width: 480px;
+
  }
+
  td {
+
    text-align: left;
+
  }
+
  td.label {
+
    color: var(--color-secondary);
+
  }
+
  td strong {
+
    font-weight: 600;
+
  }
+
</style>
+

+
<svelte:window on:keydown={handleKeydown} />
+
<div class="app">
+
  <Header/>
+
  {#await getConfig()}
+
    <!-- Loading wallet -->
+
  {:then config}
+
    <div class="wrapper">
+
      <main>
+
        {#if info}
+
          <div class="modal">
+
            <div class="modal-title">
+
              {contractAddress}
+
            </div>
+
            <div class="modal-body">
+
              <table>
+
                <tr><td class="label">Beneficiary</td><td>{info.beneficiary}</td></tr>
+
                <tr><td class="label">Allocation</td><td>{info.totalVesting} <strong>{info.symbol}</strong></td></tr>
+
                <tr><td class="label">Withdrawn</td><td>{info.withdrawn} <strong>{info.symbol}</strong></td></tr>
+
                <tr><td class="label">Withdrawable</td><td>{info.withdrawableBalance} <strong>{info.symbol}</strong></td></tr>
+
              </table>
+
            </div>
+
            <div class="modal-actions">
+
              <button on:click={() => info = null} class="small">
+
                Back
+
              </button>
+
            </div>
+
          </div>
+
        {:else}
+
          <div class="input-caption">
+
            Enter your Radicle <strong>vesting contract</strong> address
+
          </div>
+
          <div class="input-main">
+
            <span class="name">
+
              <div>
+
                <input
+
                  autofocus
+
                  size="40"
+
                  placeholder=""
+
                  class="subdomain"
+
                  disabled={$state === STATE.LOADING}
+
                  type="text" bind:value={contractAddress}
+
                />
+
              </div>
+
            </span>
+
            <button
+
              on:click={() => loadContract(config)}
+
              class="primary"
+
              data-waiting={$state === STATE.LOADING || null}
+
              disabled={$state === STATE.LOADING}
+
            >
+
              Load
+
            </button>
+
          </div>
+
        {/if}
+
      </main>
+
    </div>
+
  {:catch error}
+
    Ethereum wallet not available.
+
  {/await}
+
</div>
added src/Connect.svelte
@@ -0,0 +1,30 @@
+
<script lang="js">
+
  import {CONNECTION, session, connectWallet} from "./session.js";
+
  export let caption = "Connect";
+
  export let className = "";
+
  export let style = "";
+

+
  let connecting = false;
+
  let walletUnavailable = !window.ethereum;
+

+
  session.subscribe((sess) => {
+
    connecting = sess.connection === CONNECTION.CONNECTING;
+
  });
+
</script>
+

+
<style>
+
</style>
+

+
<button
+
  on:click={connectWallet}
+
  {style}
+
  class="connect {className}"
+
  disabled={connecting || walletUnavailable}
+
  data-waiting={connecting || null}
+
>
+
  {#if connecting}
+
    Connecting...
+
  {:else}
+
    {caption}
+
  {/if}
+
</button>
added src/Header.svelte
@@ -0,0 +1,83 @@
+
<script lang="js">
+
  // TODO: Shorten tx hash
+
  // TODO: Link to correct network on etherscan
+
  import { ethers } from "ethers";
+
  import { STATE, state, error } from "./state.js";
+
  import { ERROR } from "./error.js";
+
  import { CONNECTION, session, connectWallet, disconnectWallet, shortAddress } from "./session.js";
+
  import Logo from './Logo.svelte';
+
  import Connect from './Connect.svelte';
+

+
  let sessionButton = null;
+
  let sessionButtonHover = false;
+

+
  function formatBalance(balance) {
+
    return ethers.utils.commify(ethers.utils.formatUnits(balance));
+
  }
+
</script>
+

+
<style>
+
  header {
+
    display: flex;
+
    justify-content: space-between;
+
    align-items: center;
+
    margin: 0;
+
    padding: 1rem;
+
  }
+
  .error {
+
    text-align: center;
+
    color: var(--color-negative);
+
    background-color: var(--color-negative-2);
+
    padding: 0.5rem;
+
    border-radius: var(--border-radius);
+
  }
+
  .error a {
+
    color: var(--color-negative);
+
    text-decoration: none;
+
    border-bottom: dotted var(--color-negative) 1px;
+
  }
+
  .error a:hover {
+
    text-decoration: none;
+
  }
+
  .address {
+
    margin-left: 2rem;
+
  }
+
  .indicator {
+
    font-size: 0.5rem;
+
    margin-left: 0.5rem;
+
  }
+
</style>
+

+
{#if $error}
+
  {#if $error.type === ERROR.TRANSACTION_FAILED}
+
    <div class="error">
+
      <strong>Error:</strong> Transaction <a href="https://etherscan.io/tx/{$error.hash}">{$error.hash}</a> failed.
+
    </div>
+
  {/if}
+
{/if}
+

+
<header>
+
  <Logo style="margin-top: -1rem" />
+

+
  {#if $session.address}
+
    <div>
+
      <span class="balance">
+
        {formatBalance($session.tokenBalance)} <strong>RAD</strong>
+
      </span>
+

+
      <button class="address outline small" bind:this={sessionButton}
+
        on:click={disconnectWallet}
+
        on:mouseover={() => sessionButtonHover = true}
+
        on:mouseout={() => sessionButtonHover = false}
+
      >
+
        {#if sessionButtonHover}
+
          Disconnect
+
        {:else}
+
          {shortAddress($session.address)}
+
        {/if}
+
      </button>
+
    </div>
+
  {:else}
+
    <Connect className="small" />
+
  {/if}
+
</header>
added src/Logo.svelte
@@ -0,0 +1,45 @@
+
<script>
+
  export let style = "";
+
</script>
+

+
<style>
+
  svg {
+
    width: 10rem;
+
  }
+
</style>
+

+
<svg {style} width="181" height="33" viewBox="0 0 181 33" fill="none" xmlns="http://www.w3.org/2000/svg">
+
  <path d="M15.9816 26.8228C15.6419 23.0941 16.1806 18.0689 18.3597 15.6342C20.6547 16.1475 25.2446 14.5636 26.9137 11.3513C28.4272 8.43853 28.1528 4.16388 29 3C19.0202 2.99992 17.3645 13.4047 14.5067 21.1967C12.3937 15.4354 5.76235 11.5531 0 13.9212C2.3427 15.5546 3.80345 19.5822 6.97767 19.9427C7.97633 20.0561 9.79 19.9427 10.9846 17.6656C13.8113 19.9815 13.3993 22.79 13.0318 26.8228C12.8835 28.4504 12.3252 29.9984 12.4072 31.2897C12.5249 33.5701 16.4885 33.5701 16.6062 31.2897C16.6882 29.9984 16.1299 28.4504 15.9816 26.8228Z" fill="url(#paint0_linear)"/>
+
  <mask id="path-2-inside-1" fill="white">
+
    <path d="M89.0433 13.512C89.0433 9.07445 89.0433 4.71519 89.0433 0.320709C90.9316 0.320709 92.7503 0.320709 94.6153 0.320709C94.6153 10.3776 94.6153 20.4082 94.6153 30.482C92.7774 30.482 90.9575 30.482 89.0433 30.482C89.0433 29.9407 89.0433 29.3929 89.0433 28.7785C88.8869 28.8554 88.8236 28.8698 88.7824 28.9089C86.6925 30.872 84.2022 31.3652 81.5194 30.7064C77.9817 29.8389 75.853 27.4154 74.9786 23.9339C74.0912 20.4017 74.6879 17.1095 77.0814 14.2724C79.5988 11.288 84.0394 10.4427 87.3577 12.3145C87.9117 12.6263 88.4053 13.0528 89.0433 13.512ZM89.2279 21.4021C89.2319 20.4383 89.113 19.7064 88.8236 19.023C88.1443 17.4174 86.9508 16.4365 85.2174 16.2472C83.5822 16.0686 82.1898 16.6177 81.203 17.973C80.0405 19.5695 79.9048 21.3422 80.5675 23.1697C81.482 25.691 84.3739 26.822 86.7364 25.5866C88.493 24.6697 89.1389 23.0809 89.2279 21.4021Z"/>
+
    <path d="M65.2552 13.4917C65.2552 12.9177 65.2552 12.3895 65.2552 11.8142C67.1488 11.8142 68.9661 11.8142 70.7847 11.8142C70.9281 12.2681 70.9952 28.9447 70.8506 30.4943C69.0255 30.5674 67.1901 30.5048 65.285 30.5296C65.285 29.9309 65.285 29.3961 65.285 28.7334C65.055 28.9147 64.9245 29.0061 64.807 29.1117C63.5529 30.2387 62.0687 30.8074 60.4116 30.9313C55.8857 31.2666 52.5791 28.2861 51.4605 24.7786C50.2438 20.9607 50.7204 17.3813 53.3425 14.2534C55.8352 11.2821 60.263 10.4512 63.5632 12.2968C64.1366 12.6164 64.6429 13.0547 65.2552 13.4917ZM56.3442 21.1694C56.3442 21.7057 56.5767 22.5415 56.8196 23.1793C57.4628 24.8607 58.7015 25.8625 60.4891 26.0425C62.234 26.2186 63.6497 25.5651 64.6417 24.0755C65.8584 22.2481 65.7163 19.4945 64.3317 17.7922C62.6422 15.713 59.364 15.6804 57.6294 17.7231C56.7923 18.7093 56.3442 19.8656 56.3442 21.1694Z"/>
+
    <path d="M151.718 25.9797C153.988 25.9797 156.134 25.9797 158.322 25.9797C158.322 27.4966 158.322 28.9641 158.322 30.4784C152.061 30.4784 145.809 30.4784 139.558 30.4784C139.411 30.0167 139.382 26.7374 139.534 25.9692C141.681 25.9692 143.843 25.9692 146.046 25.9692C146.046 18.9099 146.046 11.9236 146.046 4.86289C143.867 4.86289 141.705 4.86289 139.565 4.86289C139.418 4.32548 139.381 1.27843 139.491 0.395364C139.944 0.258403 150.946 0.229707 151.718 0.378408C151.718 8.86995 151.718 17.3785 151.718 25.9797Z"/>
+
    <path d="M164.337 22.596C164.455 23.9656 165.047 24.9766 166.069 25.6769C167.681 26.7818 169.425 26.7844 171.182 26.0617C171.862 25.7826 172.323 25.2282 172.65 24.5591C174.297 24.5591 175.925 24.5591 177.665 24.5591C177.473 25.1082 177.351 25.6156 177.129 26.0735C176.129 28.1462 174.52 29.5784 172.388 30.3493C169.862 31.2636 167.299 31.2063 164.806 30.2293C162.03 29.1414 160.287 27.0596 159.502 24.1677C158.912 21.9933 158.94 19.8294 159.701 17.6942C161.035 13.9479 164.54 11.4122 168.481 11.3365C170.852 11.2909 172.991 11.9235 174.791 13.5371C176.363 14.947 177.25 16.7524 177.701 18.7963C177.969 20.0106 178.066 21.2394 177.953 22.5712C177.051 22.6195 176.157 22.5882 175.263 22.5947C174.36 22.5999 173.455 22.596 172.551 22.596C171.648 22.596 170.742 22.596 169.839 22.596C168.935 22.596 168.031 22.596 167.126 22.596C166.227 22.596 165.325 22.596 164.337 22.596ZM172.538 19.0468C172.538 18.9373 172.556 18.8498 172.536 18.7728C172.273 17.7594 171.732 16.9376 170.793 16.4614C169.295 15.7023 167.791 15.7623 166.362 16.635C165.474 17.1763 164.876 17.9836 164.547 19.0481C167.239 19.0468 169.875 19.0468 172.538 19.0468Z"/>
+
    <path d="M138.292 18.8446C136.399 18.8446 134.554 18.8446 132.695 18.8446C132.645 18.7677 132.584 18.7011 132.556 18.6242C131.835 16.6741 129.531 15.6372 127.268 16.6455C126.008 17.2063 125.224 18.2147 124.873 19.5477C124.393 21.3766 124.606 23.0944 125.843 24.5774C127.386 26.4271 130.29 26.5328 131.848 24.8005C132.188 24.4222 132.417 23.9435 132.737 23.4543C134.532 23.4543 136.394 23.4543 138.328 23.4543C138.304 23.6644 138.301 23.8523 138.258 24.0322C137.621 26.6958 136.007 28.5898 133.648 29.8459C129.658 31.972 124.552 31.0186 121.543 27.6245C117.442 22.9992 118.64 15.7077 124.001 12.6606C128.058 10.3544 133.086 11.0732 136.217 14.4098C137.248 15.5081 137.918 16.802 138.263 18.2708C138.288 18.3764 138.309 18.4834 138.319 18.5916C138.326 18.6517 138.308 18.7156 138.292 18.8446Z"/>
+
    <path d="M105.694 16.3086C103.517 16.3086 101.372 16.3086 99.1803 16.3086C99.1803 14.7928 99.1803 13.3268 99.1803 11.8123C103.228 11.8123 107.264 11.8123 111.386 11.8123C111.395 12.0523 111.415 12.304 111.415 12.5545C111.416 16.7494 111.416 20.9442 111.416 25.1392C111.416 25.3922 111.416 25.6453 111.416 25.9466C113.649 25.9466 115.794 25.9466 117.923 25.9466C118.087 26.4345 118.126 29.6199 117.988 30.482C111.744 30.482 105.492 30.482 99.2452 30.482C99.1117 30.0006 99.0707 27.0357 99.1893 25.9909C99.8958 25.9362 100.621 25.9727 101.342 25.9662C102.053 25.9597 102.763 25.965 103.474 25.965C104.203 25.965 104.935 25.965 105.653 25.965C105.812 25.4901 105.852 17.189 105.694 16.3086Z"/>
+
    <path d="M48.0231 11.8101C48.0231 13.3219 48.0231 14.7724 48.0231 16.3156C46.9794 16.3338 45.9551 16.322 44.9322 16.3233C43.8782 16.3259 42.8242 16.3233 41.7702 16.3233C40.7421 16.3233 39.7139 16.3233 38.6135 16.3233C38.6135 21.0609 38.6135 25.741 38.6135 30.4003C38.0839 30.5515 33.7517 30.5789 33 30.4499C33 24.2566 33 18.0556 33 11.8101C38.0012 11.8101 42.9779 11.8101 48.0231 11.8101Z"/>
+
    <path d="M108.052 7.36599C105.971 7.36994 104.347 5.74987 104.351 3.67589C104.355 1.63974 105.968 0.0170895 108.006 0.000132536C110.085 -0.0168245 111.725 1.5954 111.734 3.66284C111.744 5.74726 110.138 7.3621 108.052 7.36599Z"/>
+
  </mask>
+
  <path d="M89.0433 13.512C89.0433 9.07445 89.0433 4.71519 89.0433 0.320709C90.9316 0.320709 92.7503 0.320709 94.6153 0.320709C94.6153 10.3776 94.6153 20.4082 94.6153 30.482C92.7774 30.482 90.9575 30.482 89.0433 30.482C89.0433 29.9407 89.0433 29.3929 89.0433 28.7785C88.8869 28.8554 88.8236 28.8698 88.7824 28.9089C86.6925 30.872 84.2022 31.3652 81.5194 30.7064C77.9817 29.8389 75.853 27.4154 74.9786 23.9339C74.0912 20.4017 74.6879 17.1095 77.0814 14.2724C79.5988 11.288 84.0394 10.4427 87.3577 12.3145C87.9117 12.6263 88.4053 13.0528 89.0433 13.512ZM89.2279 21.4021C89.2319 20.4383 89.113 19.7064 88.8236 19.023C88.1443 17.4174 86.9508 16.4365 85.2174 16.2472C83.5822 16.0686 82.1898 16.6177 81.203 17.973C80.0405 19.5695 79.9048 21.3422 80.5675 23.1697C81.482 25.691 84.3739 26.822 86.7364 25.5866C88.493 24.6697 89.1389 23.0809 89.2279 21.4021Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M65.2552 13.4917C65.2552 12.9177 65.2552 12.3895 65.2552 11.8142C67.1488 11.8142 68.9661 11.8142 70.7847 11.8142C70.9281 12.2681 70.9952 28.9447 70.8506 30.4943C69.0255 30.5674 67.1901 30.5048 65.285 30.5296C65.285 29.9309 65.285 29.3961 65.285 28.7334C65.055 28.9147 64.9245 29.0061 64.807 29.1117C63.5529 30.2387 62.0687 30.8074 60.4116 30.9313C55.8857 31.2666 52.5791 28.2861 51.4605 24.7786C50.2438 20.9607 50.7204 17.3813 53.3425 14.2534C55.8352 11.2821 60.263 10.4512 63.5632 12.2968C64.1366 12.6164 64.6429 13.0547 65.2552 13.4917ZM56.3442 21.1694C56.3442 21.7057 56.5767 22.5415 56.8196 23.1793C57.4628 24.8607 58.7015 25.8625 60.4891 26.0425C62.234 26.2186 63.6497 25.5651 64.6417 24.0755C65.8584 22.2481 65.7163 19.4945 64.3317 17.7922C62.6422 15.713 59.364 15.6804 57.6294 17.7231C56.7923 18.7093 56.3442 19.8656 56.3442 21.1694Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M151.718 25.9797C153.988 25.9797 156.134 25.9797 158.322 25.9797C158.322 27.4966 158.322 28.9641 158.322 30.4784C152.061 30.4784 145.809 30.4784 139.558 30.4784C139.411 30.0167 139.382 26.7374 139.534 25.9692C141.681 25.9692 143.843 25.9692 146.046 25.9692C146.046 18.9099 146.046 11.9236 146.046 4.86289C143.867 4.86289 141.705 4.86289 139.565 4.86289C139.418 4.32548 139.381 1.27843 139.491 0.395364C139.944 0.258403 150.946 0.229707 151.718 0.378408C151.718 8.86995 151.718 17.3785 151.718 25.9797Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M164.337 22.596C164.455 23.9656 165.047 24.9766 166.069 25.6769C167.681 26.7818 169.425 26.7844 171.182 26.0617C171.862 25.7826 172.323 25.2282 172.65 24.5591C174.297 24.5591 175.925 24.5591 177.665 24.5591C177.473 25.1082 177.351 25.6156 177.129 26.0735C176.129 28.1462 174.52 29.5784 172.388 30.3493C169.862 31.2636 167.299 31.2063 164.806 30.2293C162.03 29.1414 160.287 27.0596 159.502 24.1677C158.912 21.9933 158.94 19.8294 159.701 17.6942C161.035 13.9479 164.54 11.4122 168.481 11.3365C170.852 11.2909 172.991 11.9235 174.791 13.5371C176.363 14.947 177.25 16.7524 177.701 18.7963C177.969 20.0106 178.066 21.2394 177.953 22.5712C177.051 22.6195 176.157 22.5882 175.263 22.5947C174.36 22.5999 173.455 22.596 172.551 22.596C171.648 22.596 170.742 22.596 169.839 22.596C168.935 22.596 168.031 22.596 167.126 22.596C166.227 22.596 165.325 22.596 164.337 22.596ZM172.538 19.0468C172.538 18.9373 172.556 18.8498 172.536 18.7728C172.273 17.7594 171.732 16.9376 170.793 16.4614C169.295 15.7023 167.791 15.7623 166.362 16.635C165.474 17.1763 164.876 17.9836 164.547 19.0481C167.239 19.0468 169.875 19.0468 172.538 19.0468Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M138.292 18.8446C136.399 18.8446 134.554 18.8446 132.695 18.8446C132.645 18.7677 132.584 18.7011 132.556 18.6242C131.835 16.6741 129.531 15.6372 127.268 16.6455C126.008 17.2063 125.224 18.2147 124.873 19.5477C124.393 21.3766 124.606 23.0944 125.843 24.5774C127.386 26.4271 130.29 26.5328 131.848 24.8005C132.188 24.4222 132.417 23.9435 132.737 23.4543C134.532 23.4543 136.394 23.4543 138.328 23.4543C138.304 23.6644 138.301 23.8523 138.258 24.0322C137.621 26.6958 136.007 28.5898 133.648 29.8459C129.658 31.972 124.552 31.0186 121.543 27.6245C117.442 22.9992 118.64 15.7077 124.001 12.6606C128.058 10.3544 133.086 11.0732 136.217 14.4098C137.248 15.5081 137.918 16.802 138.263 18.2708C138.288 18.3764 138.309 18.4834 138.319 18.5916C138.326 18.6517 138.308 18.7156 138.292 18.8446Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M105.694 16.3086C103.517 16.3086 101.372 16.3086 99.1803 16.3086C99.1803 14.7928 99.1803 13.3268 99.1803 11.8123C103.228 11.8123 107.264 11.8123 111.386 11.8123C111.395 12.0523 111.415 12.304 111.415 12.5545C111.416 16.7494 111.416 20.9442 111.416 25.1392C111.416 25.3922 111.416 25.6453 111.416 25.9466C113.649 25.9466 115.794 25.9466 117.923 25.9466C118.087 26.4345 118.126 29.6199 117.988 30.482C111.744 30.482 105.492 30.482 99.2452 30.482C99.1117 30.0006 99.0707 27.0357 99.1893 25.9909C99.8958 25.9362 100.621 25.9727 101.342 25.9662C102.053 25.9597 102.763 25.965 103.474 25.965C104.203 25.965 104.935 25.965 105.653 25.965C105.812 25.4901 105.852 17.189 105.694 16.3086Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M48.0231 11.8101C48.0231 13.3219 48.0231 14.7724 48.0231 16.3156C46.9794 16.3338 45.9551 16.322 44.9322 16.3233C43.8782 16.3259 42.8242 16.3233 41.7702 16.3233C40.7421 16.3233 39.7139 16.3233 38.6135 16.3233C38.6135 21.0609 38.6135 25.741 38.6135 30.4003C38.0839 30.5515 33.7517 30.5789 33 30.4499C33 24.2566 33 18.0556 33 11.8101C38.0012 11.8101 42.9779 11.8101 48.0231 11.8101Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M108.052 7.36599C105.971 7.36994 104.347 5.74987 104.351 3.67589C104.355 1.63974 105.968 0.0170895 108.006 0.000132536C110.085 -0.0168245 111.725 1.5954 111.734 3.66284C111.744 5.74726 110.138 7.3621 108.052 7.36599Z" stroke="#5555FF" stroke-width="2" mask="url(#path-2-inside-1)"/>
+
  <path d="M92.0433 15.512C92.0433 11.0745 92.0433 6.71519 92.0433 2.32071C93.9316 2.32071 95.7503 2.32071 97.6153 2.32071C97.6153 12.3776 97.6153 22.4082 97.6153 32.482C95.7774 32.482 93.9575 32.482 92.0433 32.482C92.0433 31.9407 92.0433 31.3929 92.0433 30.7785C91.8869 30.8554 91.8236 30.8698 91.7824 30.9089C89.6925 32.872 87.2022 33.3652 84.5194 32.7064C80.9817 31.8389 78.853 29.4154 77.9786 25.9339C77.0912 22.4017 77.6879 19.1095 80.0814 16.2724C82.5988 13.288 87.0394 12.4427 90.3577 14.3145C90.9117 14.6263 91.4053 15.0528 92.0433 15.512ZM92.2279 23.4021C92.2319 22.4383 92.113 21.7064 91.8236 21.023C91.1443 19.4174 89.9508 18.4365 88.2174 18.2472C86.5822 18.0686 85.1898 18.6177 84.203 19.973C83.0405 21.5695 82.9048 23.3422 83.5675 25.1697C84.482 27.691 87.3739 28.822 89.7364 27.5866C91.493 26.6697 92.1389 25.0809 92.2279 23.4021Z" fill="white"/>
+
  <path d="M68.2552 15.4917C68.2552 14.9177 68.2552 14.3895 68.2552 13.8142C70.1488 13.8142 71.9661 13.8142 73.7847 13.8142C73.9281 14.2681 73.9952 30.9447 73.8506 32.4943C72.0255 32.5674 70.1901 32.5048 68.285 32.5296C68.285 31.9309 68.285 31.3961 68.285 30.7334C68.055 30.9147 67.9245 31.0061 67.807 31.1117C66.5529 32.2387 65.0687 32.8074 63.4116 32.9313C58.8857 33.2666 55.5791 30.2861 54.4605 26.7786C53.2438 22.9607 53.7204 19.3813 56.3425 16.2534C58.8352 13.2821 63.263 12.4512 66.5632 14.2968C67.1366 14.6164 67.6429 15.0547 68.2552 15.4917ZM59.3442 23.1694C59.3442 23.7057 59.5767 24.5415 59.8196 25.1793C60.4628 26.8607 61.7015 27.8625 63.4891 28.0425C65.234 28.2186 66.6497 27.5651 67.6417 26.0755C68.8584 24.2481 68.7163 21.4945 67.3317 19.7922C65.6422 17.713 62.364 17.6804 60.6294 19.7231C59.7923 20.7093 59.3442 21.8656 59.3442 23.1694Z" fill="white"/>
+
  <path d="M154.718 27.9797C156.988 27.9797 159.134 27.9797 161.322 27.9797C161.322 29.4966 161.322 30.9641 161.322 32.4784C155.061 32.4784 148.809 32.4784 142.558 32.4784C142.411 32.0167 142.382 28.7374 142.534 27.9692C144.681 27.9692 146.843 27.9692 149.046 27.9692C149.046 20.9099 149.046 13.9236 149.046 6.86289C146.867 6.86289 144.705 6.86289 142.565 6.86289C142.418 6.32548 142.381 3.27843 142.491 2.39536C142.944 2.2584 153.946 2.22971 154.718 2.37841C154.718 10.87 154.718 19.3785 154.718 27.9797Z" fill="white"/>
+
  <path d="M167.337 24.596C167.455 25.9656 168.047 26.9766 169.069 27.6769C170.681 28.7818 172.425 28.7844 174.182 28.0617C174.862 27.7826 175.323 27.2282 175.65 26.5591C177.297 26.5591 178.925 26.5591 180.665 26.5591C180.473 27.1082 180.351 27.6156 180.129 28.0735C179.129 30.1462 177.52 31.5784 175.388 32.3493C172.862 33.2636 170.299 33.2063 167.806 32.2293C165.03 31.1414 163.287 29.0596 162.502 26.1677C161.912 23.9933 161.94 21.8294 162.701 19.6942C164.035 15.9479 167.54 13.4122 171.481 13.3365C173.852 13.2909 175.991 13.9235 177.791 15.5371C179.363 16.947 180.25 18.7524 180.701 20.7963C180.969 22.0106 181.066 23.2394 180.953 24.5712C180.051 24.6195 179.157 24.5882 178.263 24.5947C177.36 24.5999 176.455 24.596 175.551 24.596C174.648 24.596 173.742 24.596 172.839 24.596C171.935 24.596 171.031 24.596 170.126 24.596C169.227 24.596 168.325 24.596 167.337 24.596ZM175.538 21.0468C175.538 20.9373 175.556 20.8498 175.536 20.7728C175.273 19.7594 174.732 18.9376 173.793 18.4614C172.295 17.7023 170.791 17.7623 169.362 18.635C168.474 19.1763 167.876 19.9836 167.547 21.0481C170.239 21.0468 172.875 21.0468 175.538 21.0468Z" fill="white"/>
+
  <path d="M141.292 20.8446C139.399 20.8446 137.554 20.8446 135.695 20.8446C135.645 20.7677 135.584 20.7011 135.556 20.6242C134.835 18.6741 132.531 17.6372 130.268 18.6455C129.008 19.2063 128.224 20.2147 127.873 21.5477C127.393 23.3766 127.606 25.0944 128.843 26.5774C130.386 28.4271 133.29 28.5328 134.848 26.8005C135.188 26.4222 135.417 25.9435 135.737 25.4543C137.532 25.4543 139.394 25.4543 141.328 25.4543C141.304 25.6644 141.301 25.8523 141.258 26.0322C140.621 28.6958 139.007 30.5898 136.648 31.8459C132.658 33.972 127.552 33.0186 124.543 29.6245C120.442 24.9992 121.64 17.7077 127.001 14.6606C131.058 12.3544 136.086 13.0732 139.217 16.4098C140.248 17.5081 140.918 18.802 141.263 20.2708C141.288 20.3764 141.309 20.4834 141.319 20.5916C141.326 20.6517 141.308 20.7156 141.292 20.8446Z" fill="white"/>
+
  <path d="M108.694 18.3086C106.517 18.3086 104.372 18.3086 102.18 18.3086C102.18 16.7928 102.18 15.3268 102.18 13.8123C106.228 13.8123 110.264 13.8123 114.386 13.8123C114.395 14.0523 114.415 14.304 114.415 14.5545C114.416 18.7494 114.416 22.9442 114.416 27.1392C114.416 27.3922 114.416 27.6453 114.416 27.9466C116.649 27.9466 118.794 27.9466 120.923 27.9466C121.087 28.4345 121.126 31.6199 120.988 32.482C114.744 32.482 108.492 32.482 102.245 32.482C102.112 32.0006 102.071 29.0357 102.189 27.9909C102.896 27.9362 103.621 27.9727 104.342 27.9662C105.053 27.9597 105.763 27.965 106.474 27.965C107.203 27.965 107.935 27.965 108.653 27.965C108.812 27.4901 108.852 19.189 108.694 18.3086Z" fill="white"/>
+
  <path d="M51.0231 13.8101C51.0231 15.3219 51.0231 16.7724 51.0231 18.3156C49.9794 18.3338 48.9551 18.322 47.9322 18.3233C46.8782 18.3259 45.8242 18.3233 44.7702 18.3233C43.7421 18.3233 42.7139 18.3233 41.6135 18.3233C41.6135 23.0609 41.6135 27.741 41.6135 32.4003C41.0839 32.5515 36.7517 32.5789 36 32.4499C36 26.2566 36 20.0556 36 13.8101C41.0012 13.8101 45.9779 13.8101 51.0231 13.8101Z" fill="white"/>
+
  <path d="M111.052 9.36599C108.971 9.36994 107.347 7.74987 107.351 5.67589C107.355 3.63974 108.968 2.01709 111.006 2.00013C113.085 1.98318 114.725 3.5954 114.734 5.66284C114.744 7.74726 113.138 9.3621 111.052 9.36599Z" fill="white"/>
+
  <defs>
+
    <linearGradient id="paint0_linear" x1="9.95098" y1="11.5096" x2="22.4573" y2="35.1592" gradientUnits="userSpaceOnUse">
+
      <stop stop-color="#FF55FF"/>
+
      <stop offset="1" stop-color="#5555FF"/>
+
    </linearGradient>
+
  </defs>
+
</svg>
added src/config.js
@@ -0,0 +1,46 @@
+
import { ethers } from "ethers";
+

+
const config = {
+
  homestead: {
+
    registrar: {
+
      address: "0x37723287Ae6F34866d82EE623401f92Ec9013154",
+
    },
+
    radToken: {
+
      address: "0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3",
+
    }
+
  },
+
  ropsten: {
+
    registrar: {
+
      address: "0xb31441c140E92Ca20A0141D68b13b10ca051e40a",
+
    },
+
    radToken: {
+
      address: "0x59b5eee36f5fa52400A136Fd4630Ee2bF126a4C0",
+
    }
+
  }
+
};
+

+
function isMetamaskInstalled() {
+
  const { ethereum } = window;
+
  return Boolean(ethereum && ethereum.isMetaMask);
+
}
+

+
export async function getConfig() {
+
  if (isMetamaskInstalled()) {
+
    const provider = new ethers.providers.Web3Provider(window.ethereum);
+

+
    let network = await provider.ready;
+
    let cfg = config[network.name];
+

+
    if (cfg) {
+
      return {
+
        registrar: cfg.registrar,
+
        radToken: cfg.radToken,
+
        provider: provider,
+
      };
+
    } else {
+
      throw `Wrong network: ${network.name}`;
+
    }
+
  } else {
+
    throw "No provider available";
+
  }
+
}
added src/error.js
@@ -0,0 +1,3 @@
+
export const ERROR = {
+
  TRANSACTION_FAILED: 1,
+
};
added src/index.js
@@ -0,0 +1,7 @@
+
import App from "./App.svelte";
+

+
let app = new App({
+
  target: document.body,
+
});
+

+
export default app;
added src/session.js
@@ -0,0 +1,78 @@
+
import { writable } from "svelte/store";
+
import { ethers } from "ethers";
+
import { getConfig } from "./config.js";
+

+
export const CONNECTION = {
+
  DISCONNECTED: 0,
+
  CONNECTING: 1,
+
  CONNECTED: 2
+
};
+

+
export const session = writable({
+
  connection: CONNECTION.DISCONNECTED,
+
});
+

+
const tokenAbi = [
+
  "function balanceOf(address) view returns (uint256)",
+
  "function approve(address, uint256) returns (bool)",
+
  "function allowance(address, address) view returns (uint256)",
+
];
+

+
export async function connectWallet() {
+
  session.set({ connection: CONNECTION.CONNECTING });
+

+
  // TODO: This hangs on Brave, if you have to unlock your wallet..
+
  try {
+
    let accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
+
  } catch (e) {
+
    console.error(e);
+
  }
+

+
  const config = await getConfig();
+

+
  const token = new ethers.Contract(config.radToken.address, tokenAbi, config.provider);
+
  const signer = config.provider.getSigner();
+

+
  let addr = await signer.getAddress();
+

+
  try {
+
    let tokenBalance = await token.balanceOf(addr);
+
    session.set({
+
      address: addr,
+
      tokenBalance: tokenBalance,
+
      connection: CONNECTION.CONNECTED
+
    });
+
  } catch (e) {
+
    console.error(e);
+
  }
+
}
+

+
export async function approveSpender(spender, amount, config) {
+
  const token = new ethers.Contract(config.radToken.address, tokenAbi, config.provider);
+
  const signer = config.provider.getSigner();
+
  const addr = await signer.getAddress();
+

+
  const allowance = await token.allowance(addr, spender);
+

+
  if (allowance < amount) {
+
    let tx = await token.connect(signer).approve(spender, amount);
+
    await tx.wait();
+
  }
+
}
+

+
export async function updateBalance(n) {
+
  session.update((s) => {
+
    s.tokenBalance = s.tokenBalance.add(n);
+
    return s;
+
  });
+
}
+

+
export function disconnectWallet() {
+
  location.reload();
+
}
+

+
export function shortAddress(addr) {
+
  return addr.substring(0, 6)
+
    + '...'
+
    + addr.substring(addr.length - 4, addr.length);
+
}
added src/snowpack.config.js
@@ -0,0 +1,27 @@
+
/** @type {import("snowpack").SnowpackUserConfig } */
+
module.exports = {
+
  mount: {
+
    /* ... */
+
  },
+
  plugins: [
+
    '@snowpack/plugin-svelte'
+
  ],
+
  routes: [
+
    /* Enable an SPA Fallback in development: */
+
    // {"match": "routes", "src": ".*", "dest": "/index.html"},
+
  ],
+
  optimize: {
+
    /* Example: Bundle your final build: */
+
    // "bundle": true,
+
  },
+
  packageOptions: {
+
    polyfillNode: true,
+
  },
+
  devOptions: {
+
    open: "none",
+
    output: "dashboard"
+
  },
+
  buildOptions: {
+
    /* ... */
+
  },
+
};
added src/state.js
@@ -0,0 +1,14 @@
+
import { derived, writable } from "svelte/store";
+

+
export const STATE = {
+
  ERROR: -1,
+
  IDLE: 0,
+
  LOADING: 1,
+
  FOUND: 2,
+
  NOT_FOUND: 3,
+
  WITHDRAWING: 4,
+
  WITHDRAWN: 5,
+
};
+

+
export const state = writable(STATE.IDLE);
+
export const error = writable(null);
added src/vesting.js
@@ -0,0 +1,46 @@
+
import { ethers } from "ethers";
+

+
const abi = [
+
  "function token() view returns (address)",
+
  "function totalVestingAmount() view returns (uint256)",
+
  "function vestingStartTime() view returns (uint256)",
+
  "function vestingPeriod() view returns (uint256)",
+
  "function cliffPeriod() view returns (uint256)",
+
  "function beneficiary() view returns (address)",
+
  "function interrupted() view returns (bool)",
+
  "function withdrawn() view returns (uint256)",
+
  "function withdrawableBalance() view returns (uint256)",
+
  "function withdrawVested()",
+
];
+

+
const tokenAbi = [
+
  "function symbol() view returns (string)",
+
];
+

+
export async function getInfo(address, config) {
+
  const contract = new ethers.Contract(address, abi, config.provider);
+
  const signer = config.provider.getSigner();
+
  const userAddr = await signer.getAddress();
+

+
  const token = await contract.token();
+
  const beneficiary = await contract.beneficiary();
+
  const withdrawable = await contract.withdrawableBalance();
+
  const withdrawn = await contract.withdrawn();
+
  const total = await contract.totalVestingAmount();
+

+
  const tokenContract = new ethers.Contract(token, tokenAbi, config.provider);
+
  const symbol = await tokenContract.symbol();
+

+
  return {
+
    token: token,
+
    symbol: symbol,
+
    beneficiary: beneficiary,
+
    totalVesting: format(total),
+
    withdrawableBalance: format(withdrawable),
+
    withdrawn: format(withdrawn),
+
  };
+
}
+

+
function format(n) {
+
  return ethers.utils.commify(parseFloat(ethers.utils.formatUnits(n)).toFixed(2));
+
}